Q&A

  • 소켓통신시... 메세지가 붙어서 오는 경우...

채팅 플그림을 만들고 있습니다.

서버는 자바..

클라이언트는 델로 구현하져..

클라인언트단에서..

Indy 의 TClientSocket를 사용해서리..

메세지를 주거니 받거니 하져..

서버 구현자와의 협의하에..

임의의 사용자 패킷을 정의해서 사용하구 있구여..

클라이언트에서 서버로 접속을 하게 되면..

아뒤와 암호를 넘겨주고..

서버에선 아뒤와 암호를 체크해서리 소속팀과 기타정보를

넘겨줍니다.

이 놈을 가지고 다시 Treeview 컴포넌트에 뿌려준답니다.

그런데..

문제는 ..

여러 사용자가 동시에 접속하거나..

뭐 등등의 상황에서..

사용자 패킷이 1개 이상 붙어서 들어와 버린다는 겁니다.

이럴경우..

최선의 방법의 무엇인지요??

패킷의 전송 시작자와 전송 완료자를 두어 체크를 해야 하는 건지..

아님...

Indy 의 ClientSocket의 컴포에 문제가 있어서..

다른 넘을 써야 하는 건지??

참고로..

메세지를 받을 땐..

var
   revStr:string;
begin
revStr := trim(socket.ReceiveText);
...
...
...
end;

이렇게 하구 있답니다.

Client Type은 ctNonBlocking 이렇구여..

고수님들의 많은 지도와 편달 부탁드립니다.

(--) (__)  꾸벅..
1  COMMENTS
  • Profile
    혜월 2003.08.22 01:00
    서버랑 주고 받을때
    한 패킷의 시작과 끝을 알려주어야 합니다.
    (끝만 알려줘도 별 이상없긴 하더군요)
    아니면. 패킷 시작단에 그 패킷의 길이를
    같이 보내주면 클라이언트에서 그 길이 만큼
    올때까지.. 받아서 처리하면 됩니다.