안녕하세요
방식은 넌블럭킹모드로 서버 클라이언트 프로그램을 하고 있습니다
넌 블럭킹은 read에서 이벤트 방식에서 일어나기 때문에
데이타 크면 테이타를 받다가 끊어지네요..!
Client 프로토콜을 변경을 못해서 서버에서 보낼때 잘라서 4096바이트 보낼려고 합니다
정말 1주일동안 미친짓을 다 해도 모르겠네요
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
이런식으로해서 링크드 리스트에 유저정보를 넣고 있습니다
그럼 계속 접속하면 리스트가 500개가 되겠죠.
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
CS_LIST|1111111$test$22222$test'+inttostr(i)+'$Y$Ready$211.24.24.9$01$30$E$E1$T^|EOF
그럼 위에처럼 링크드 리스트 차곡차곡 싸이게 되죠.
그럼 여기서 500개 되면 사이즈가 4096 넘으니까 이걸 짤라서 클라이언트에게 보내고
싶습니다.
어떤 방식으로 보내야 하는지 정말 모르겟습니다
for i:=0 to 500 do
begin
SendBuf := 'CS_LIST|20040735$test$9223723$test'+inttostr(i)+'$Y$Ready$211.35.144.9$01$30$E$E1$T^|EOF';
ServerSocket.Socket.Connections[j].SendBuf(SendBuf[1],Length(SendBuf));
sleep(10);
end;
방법을 몰라서 위에처럼 클라이언트 유저리스트 정보를 요청하면 서버 소켓이
500번을 쏩니다..
이건 정말 무식한 방법 같은데 어떻게 해야 하는지
머리속에서는 생각은 나는데 정말 코딩으로 할려니까 도무지 모르겠어요
소켓통신은 처음이라서.
정말 서버에서 4096 씩 자르는 방법과 받을때 4096 받는 방법좀
정말 간단한 예라도 좋으니
고수님은 저 한번 살려주는 샘치고 간단히라도 예제로좀 알려주세요
부탁드립니다
자료실로 가셔서 '구창민' 으로 검색해보시면
한델 2차 세미나 자료(파일전송, UNIX 와 소켓통신 예제) <- 요런 자료를
보실 수 있을 겁니다.
파일을 송신할때 원하는 바이트 만큼씩 잘라서 송수신 하는 과정을 담고 있지요..
보시면 참고가 되실거 같네요..
즐거운 프로그래밍 하시길~