我已经阅读了很多关于UDP与TCP的其他线程但是没有找到任何正确回答我的设计问题
我将为项目工作的聊天网络将有3个主要应用程序:客户端,服务器和HUB(服务器)。
HUB服务器是将所有服务器连接在一起形成网络的主服务器。 服务器将跟上正在制作的聊天室,换句话说它将托管房间。 客户端将用于连接服务器以加入聊天室。
现在我主要担心的是,当发送或执行从客户端到服务器,服务器到服务器或从服务器到客户端的请求时,我应该何时使用UDP over TCP,反之亦然?
注意:整个聊天网络项目 100%基于文本,没有图形,网络摄像头,麦克风或文件共享功能。
答案 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。
TCP
TCP是面向连接的协议。连接方向意味着 通讯设备应该在传输数据之前建立连接,并且应该 传输数据后关闭连接。
因此,现在您可以看到TCP是可靠的协议,它将为您提供有关数据包传送的信息/确认,另一方面,UDP不能为您提供100%成功的数据包传送保证。
针对您在聊天服务中的情况。我的建议是使用TCP,因为在聊天消息传递中应100%成功。而且,如果数据包传送失败,则可以尝试再次发送它,而UDP则不起作用。
在通过网络进行一些流传输时可以使用UDP,因为那样的话,UDP最好继续使用。
因此,如果您只需要在客户端之间聊天,那么最好使用TCP,因为可以保证传输的数据保持完整并以发送时的相同顺序到达。