【问题标题】:Is TCP better than UDP for multi-threaded servers?对于多线程服务器,TCP 是否优于 UDP?
【发布时间】:2025-12-20 06:00:11
【问题描述】:

如果我要实现一个服务器来处理同时连接的多个客户端,使用 TCP 会更好吗?

不考虑效率(我知道 UDP 更快,但不可靠)。

在 UDP 中,您不能为每个客户端连接使用套接字吗? 因为在 UDP 中,套接字仅由目标端口号标识(对吗?)。

在 Java 中,我知道在 TCP 中创建一个多线程服务器来同时处理多个客户端很容易。但是它可以在UDP中完成吗?我想这会很复杂。

我只是想在这里了解一下 UDP(我不想实际实现任何东西)。

【问题讨论】:

  • 为什么使用 UDP 会更难?您对“不考虑效率”的“更好”的定义是什么?

标签: udp client-server


【解决方案1】:

这取决于您正在开发哪种服务器。如果您需要您的客户端保持连接并准备好从服务器接收数据(例如推送服务),您应该使用 TCP 实现它。如果你想实现一个简单的请求-响应服务,那么 UDP 是更好的选择。

【讨论】:

  • 另外,您的客户能否轻松处理丢失的消息? UDP 不保证传递,因此客户端必须确定消息是否丢失并进行处理。 TCP 保证交付。