채팅 응용 프로그램을 구현하려고하는데 피어 간의 메시징 교환을 위해 TCP 또는 UDP를 사용하도록 설계해야합니다. TCP를 사용하고 싶지만 다음과 같은 문제가 있습니다.TCP로 다중 스레드 처리
문제 시나리오 : 피어 A는 잘 알려진 포트 (예 : 5555)에서 수신 대기하고 있습니다. 피어 B가 피어 A에게 메시지를 보내려고하면 피어 A는 해당 포트 5555에 연결합니다. 피어 A는 연결을 허용하고 피어 B와의 통신을 처리하기 위해 새 스레드를 시작하므로 다른 피어 (피어 C)는 다음을 수행 할 수 있습니다. 피어 A의 5555 포트에 연결합니다. 이제 문제는 요청/응답 프로토콜이 아니기 때문에 피어 A가 어떤 이유로 피어 B에 응답하지 않으면 B가 보낸 후속 메시지가 피어 A의 포트 5555에 전달된다는 사실을 혼란스럽게 생각합니까? 피어 A는 수신 된 각 메시지에 대해 별도의 스레드를 생성합니다.
UDP를 사용하면이 문제가 해결 될 것이므로 각 피어와 통신하기 위해 별도의 스레드를 만들어야하며 모든 사람들이 잘 알려진 동일한 포트로 메시지를 보낼 수 있습니다. 하지만 메시지를 전달하기 위해 TCP를 사용하고 싶습니다. 이 문제를 처리하고 하나의 피어와의 통신을 위해 하나의 스레드 만 사용하는 좋은 방법은 무엇입니까?
+1. 또한 serverSocket은 미리 정의 된 포트에서 들어오는 연결을 수신 대기해야합니다. 피어 간의 모든 추가 통신은 무작위 (그러나 사전에 정해진) 포트에서 수행됩니다. – Shark
@ Shark No. 서버 측에서는 수신 소켓이 수신 대기 소켓과 동일한 로컬 포트를 사용합니다. 사전 준비도 필요하지 않습니다. ServerSocket이 무엇을해야하는지에 대한 부분은 이해할 수 없습니다. 확실히 다른 것을 할 수 없기 때문입니다. – EJP