我正在尝试实现一个聊天应用程序,并在设计上选择使用 TCP 或 UDP 进行对等方之间的消息交换。我想使用 TCP,但遇到以下问题。
问题场景:对等点 A 正在侦听一个众所周知的端口(例如 5555)。当对等体 B 想向对等体 A 发送消息时,它连接到 A 上的端口 5555。对等体 A 接受该连接并启动一个新线程来处理与对等体 B 的通信,以便其他对等体(例如对等体 C)能够连接到对等体 A 的 5555 端口。现在的问题是它不是请求/响应协议,所以我很困惑,如果对等点 A 出于任何原因没有回复对等点 B,那么 B 发送的后续消息将被传递到对等点 A 的 5555 端口?并且对等体 A 将为收到的每条消息创建单独的线程?
使用 UDP 可能会解决这个问题,我不必创建单独的线程来与每个对等方通信,每个人都可以将消息发送到同一个众所周知的端口。但我想使用 TCP 来保证消息将被传递。任何想法什么是处理这个问题的好方法,并且只使用一个线程与一个对等方通信?