需要帮助决定何时在我的基本聊天网络上使用UDP over TCP

时间:2013-08-02 04:43:57

标签: networking tcp udp chat

我已经阅读了很多关于UDP与TCP的其他线程但是没有找到任何正确回答我的设计问题

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

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

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

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

4 个答案:

答案 0 :(得分:4)

例如,当在流式传输中丢失一些数据包是可接受的时,使用

UDP。在聊天系统的情况下,丢失消息是不可接受的,所以我会选择TCP。有关详情,请参阅Difference between TCP and UDP?When is it appropriate to use UDP instead of TCP?

答案 1 :(得分:0)

我不明白HUB服务器的作用吗?您是否允许通过HUB服务器在不同聊天室之间传递消息?

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

答案 2 :(得分:0)

正如其他人所说,UDP不保证数据包传输。但是,如果您的HUB恰好位于NAT或防火墙后面(如在对等网络中),则UDP为getting around it提供了优势。在您的情况下,这是我使用UDP的唯一原因。如果您需要可靠的,为了传递数据包,有UDT这样的库可以帮助解决这个问题。

答案 3 :(得分:0)

首先,您需要了解什么是TCP和UDP。

  1. TCP

    TCP是面向连接的协议。连接方向意味着 通讯设备应该在传输数据之前建立连接,并且应该 传输数据后关闭连接。

  2. UDP UDP是面向数据报的协议。这是因为没有开销 打开连接,保持连接并终止连接。 UDP是 高效的广播和多播类型的网络传输。

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

针对您在聊天服务中的情况。我的建议是使用TCP,因为在聊天消息传递中应100%成功。而且,如果数据包传送失败,则可以尝试再次发送它,而UDP则不起作用。

在通过网络进行一些流传输时可以使用UDP,因为那样的话,UDP最好继续使用。

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