채팅 플그림을 만들고 있습니다.
서버는 자바..
클라이언트는 델로 구현하져..
클라인언트단에서..
Indy 의 TClientSocket를 사용해서리..
메세지를 주거니 받거니 하져..
서버 구현자와의 협의하에..
임의의 사용자 패킷을 정의해서 사용하구 있구여..
클라이언트에서 서버로 접속을 하게 되면..
아뒤와 암호를 넘겨주고..
서버에선 아뒤와 암호를 체크해서리 소속팀과 기타정보를
넘겨줍니다.
이 놈을 가지고 다시 Treeview 컴포넌트에 뿌려준답니다.
그런데..
문제는 ..
여러 사용자가 동시에 접속하거나..
뭐 등등의 상황에서..
사용자 패킷이 1개 이상 붙어서 들어와 버린다는 겁니다.
이럴경우..
최선의 방법의 무엇인지요??
패킷의 전송 시작자와 전송 완료자를 두어 체크를 해야 하는 건지..
아님...
Indy 의 ClientSocket의 컴포에 문제가 있어서..
다른 넘을 써야 하는 건지??
참고로..
메세지를 받을 땐..
var
revStr:string;
begin
revStr := trim(socket.ReceiveText);
...
...
...
end;
이렇게 하구 있답니다.
Client Type은 ctNonBlocking 이렇구여..
고수님들의 많은 지도와 편달 부탁드립니다.
(--) (__) 꾸벅..
한 패킷의 시작과 끝을 알려주어야 합니다.
(끝만 알려줘도 별 이상없긴 하더군요)
아니면. 패킷 시작단에 그 패킷의 길이를
같이 보내주면 클라이언트에서 그 길이 만큼
올때까지.. 받아서 처리하면 됩니다.