我正在尝试实现一个聊天应用程序,并且有一个关于使用TCP或UDP进行对等之间消息交换的设计选择。我想使用TCP,但遇到以下问题。使用TCP处理多个线程
问题场景: Peer A正在监听一个众所周知的端口(如5555)。当对等体B想要发送消息给对等体A时,它连接到A上的端口5555.对等体A接受连接并启动一个新的线程来处理与对等体B的通信,以便其他对等体(比如对等体C)能够连接到对等A的5555端口。现在问题在于它不是一个请求/响应协议,所以我很困惑,如果对方A出于任何原因没有回复对方B,那么由B发送的后续消息将被传送到对等方A上的端口5555?对等体A将为接收到的每条消息创建单独的线程。
使用UDP可能会解决这个问题,我不会创建单独的线程与每个对等进行通信,每个人都可以将消息发送到同一个众所周知的端口。但我想使用TCP来保证消息将被传递。任何想法什么是处理这个问题的好方法,并且只使用一个线程与同伴进行通信?
+1。此外,serverSocket应该只监听预定义端口上的传入连接;所有进一步的通信之间的通信将随机(但预先安排)端口完成。 – Shark 2012-07-27 16:32:36
@Shark否。在服务器端,接受的套接字使用与监听套接字相同的本地端口。不需要预先安排。有关ServerSocket应该做什么的部分甚至没有意义,因为它当然不能做其他事情。 – EJP 2012-07-30 00:57:40