2011-03-25 3 views
1

저는 TCP/IP에 대해 배우기 시작했습니다.동일한 서버에 여러 개의 tcpip 클라이언트가 연결되어 있습니까?

나는 포트 3000에서 수신 대기하고 연결이 수신 될 때 스레드를 생성하는 간단한 TCP/IP 서버를 작성했습니다. 새 스레드가 데이터를 읽고 읽습니다. 내 클라이언트 응용 프로그램은이 서버에 100 개의 연결을 생성하고 트레드 풀을 사용하여 각 연결에 고유 한 메시지를 서버에 보낼 수 있습니다.

서버가 메시지에 응답하지 않습니다. 서버는 메시지를 화면에 출력합니다. 그래서, 내가보고있는 것은 서버의 청취 스레드가 때때로 여러 다른 클라이언트의 메시지를 동일한 읽기에서 읽는 것입니다.

나는 TCP가 각 메시지를 분리하여 서버의 각 스레드가 다른 모든 스레드가 아닌 해당 메시지를 읽을 수 있도록하고있었습니다. 내 이해에 착각 한 것입니까, 아니면 제 코드에 다른 것이 있습니까?

+4

동일한 읽기에서 여러 클라이언트에서 읽음을 어떻게 알 수 있습니까? 동시에 화면에 인쇄하고 자신의 출력 코드를 짓밟는 것이 아니라고 확신합니까? – yan

+0

System.Diagnostics.Debug.WriteLine에 대한 액세스를 잠급니다. 그래서 나는 내가 읽고있는 것을 인쇄하고 있습니다. – Curtis

답변

1

코드에 다른 내용이 있습니다. TCP 또는 UDP는 동일한 읽기에서 여러 클라이언트로부터 수신하지 않습니다.

버퍼 처리에 대해 살펴 보겠습니다. 읽기와 관련하여 서버 코드를 게시하십시오.

0

감사합니다. 나는 그것을 알아. 내 클라이언트 스레드는 서버의 읽기 스레드보다 훨씬 자주 실행되었습니다. 결과적으로, 각 읽기에는 종종 여러 번 기록 된 데이터가 포함됩니다.

관련 문제