1

我已经阅读了很多关于 UDP 与 TCP 的其他主题,但还没有真正找到任何可以正确回答我的设计问题的主题

我将为一个项目工作的聊天网络将有 3 个主要应用程序:客户端、服务器和 HUB(服务器)。

HUB服务器是将所有服务器连接在一起形成网络的主服务器。服务器将跟上正在制作的聊天室,换句话说,它将托管房间。客户端将用于连接服务器以加入聊天室。

现在我主要关心的是,在从客户端到客户端、服务器到服务器或服务器到客户端发送或执行请求时,何时应该使用 UDP over TCP 或反之亦然?

注意:整个聊天网络项目是100% 基于文本的,没有图形、网络摄像头、麦克风或文件共享功能。

4

4 回答 4

4

UDP当丢失一些数据包是可以接受的时候使用,例如在流式传输中。在聊天系统的情况下,丢失消息是不可接受的,所以我会选择TCP. 有关详细信息,请参阅TCP 和 UDP 之间的区别?什么时候适合使用 UDP 而不是 TCP?.

于 2013-08-02T04:51:14.837 回答
0

没看懂这里HUB服务器的作用?您是否允许通过 HUB 服务器在不同聊天室之间传递消息?

正如史蒂夫所建议的,我还建议使用 TCP 来开发基于文本的聊天应用程序。与基于文本的聊天应用程序一样,所有消息都应该按照发送时的顺序发送。

于 2013-08-02T16:44:17.950 回答
0

正如其他人所说,UDP 不保证数据包的传递。但是,如果您的 HUB 恰好位于 NAT 或防火墙后面(如在对等网络中),那么 UDP 为绕过它提供了优势。在您的情况下,这是我使用 UDP 的唯一原因。如果您需要可靠的按顺序传送数据包,可以使用诸如UDT之类的库来提供帮助。

于 2013-08-02T22:32:38.533 回答
0

首先你需要知道什么是 TCP 和 UDP。

  1. TCP

    TCP 是一种面向连接的协议。面向连接的意思是通信设备在传输数据之前应该建立连接,在传输数据之后应该关闭连接。

  2. UDP UDP 是面向数据报的协议。这是因为打开连接、维护连接和终止连接没有开销。UDP 对于广播和多播类型的网络传输是有效的。

因此,现在您可以看到 TCP 是一种可靠的协议,它将为您提供有关数据包传递的信息/确认,另一方面,UDP 不能保证数据包传递 100% 成功。

对于您在聊天服务中的情况。我的建议是使用 TCP,因为在聊天消息传递中应该 100% 成功。如果数据包传递失败,那么您可以尝试再次发送它,但 UDP 不具备这种功能。

在通过网络进行某些流式传输时可以使用 UDP,在这种情况下,最好继续使用 UDP。

因此,如果您只需要在客户端之间聊天,那么最好的一个将是 TCP,因为可以保证传输的数据保持完整并以与发送时相同的顺序到达。

于 2019-12-30T11:06:45.943 回答