|
안녕하세요..
님의 질문으로 보아 패킷이 소실되는 상황을 어떻게 대처해야 되는지 해결책을 묻는것 같습니다.
결론적으로 말씀드리면 TClientSocket이나 TServerSocket은 패킷을 소실하지 않습니다.
만약 그러한 현상이 생긴다면 그건 전적으로 프로그래머의 책임입니다.
우선 ClientSocket을 사용하신다면 SendText를 한후 리턴값을 체크하여
보내지 못한 나머지 텍스트들을 처리해 주어야 합니다.
한번씩 SendText를 할 경우엔 별 문제가 없지만 for문을 이용하여 빈번한 데이터를 보낼때는
데이터를 모두 보내지 못할수도 있기 때문입니다.
참고로 말씀드리면 Network을 이용한 데이터의 전송은 PC에도 돌리는 for문의 속도를 따라가지
못하기 때문에 이런 경우엔 병목현상을 처리할수 있는 방법들을 조치해야 합니다.
질문에 대한 답변이 부족하면 다시 질문 올려 주세요..
왕초보 님이 쓰신 글 :
: 안녕하세요? 첨으로 글을 올립니다.
:
: 제가 지금 C/S 프로젝트를 진행하는데, 자꾸 메시지가 소실되는 현상이 있어서 미칠 지경이네요.
:
: Server는 Linux, Client는 MS Windows를 사용하고 있습니다. 근데 문제는 메시지를 연속으로 보낼때 발생하는데 Linux의 경우는 제가 소켓의 버퍼를 관리하기때문에 연속으로 전달된 메시지도 잘 처리합니다.
: 근데 Windows의 경우는 TClientSockt, TServerSockt Component를 사용하는데.... 연속으로 전달되는 메시지가 빈번히(상당히..) 소실됩니다.
:
: 나름대로 대충 원인에 대해서는 감을 잡고있는데 해결할 대책이 없네요.
: 시간이 충분하다면 API level에서 컴포넌트를 만들어서 사용하고 싶지만, 그럴만큼 시간적 여유가 없어요.
:
: 만약 클라이언트는 for문을 사용해서 서버로 계속 메시지를 보내고, 서버에서는 그 메시지를 소실없이 처리할수 있는 방법을 알려주시는 분이 있다면 알려주시면 매우감사하겠습니다.
|