可以先发送一条UDP消息然后发送一条TCP消息吗?

时间:2012-09-02 11:16:08

标签: sockets networking tcp udp real-time

我有一个应用程序可以通过LAN与其他客户端实时通信。应用程序要求数据包按顺序完成并且全部到达。它还需要尽可能快的传输,我似乎在这方面遇到了一些TCP问题。

所以我正在考虑这个问题,作为一个没有经验的网络程序员,如果我首先发送UDP protocoled消息,然后发送与TCP相同的数据,该怎么办?如果UDP消息到达我将尽可能快地获得它,如果不是我仍然有TCP消息,将确保我将至少得到该数据包。显然,我会通过给每条消息提供ID或类似信息来确保我不会读取相同的数据两次。

这有什么好方法吗?我在想,也许同时发送tcpmessage只会减慢udp消息的速度,所以无论如何它都不会有所作为。

3 个答案:

答案 0 :(得分:2)

不,这不是一个好方法。

您的网络带宽增加了一倍,并且显着增加了网络代码的复杂性,而收益甚微。

TCP和UDP具有非常不同的特征。如果您关心数据及时到达,如果数据迟到则没有用,那么TCP没用,因此您应该使用并且只使用UDP。如果您不关心及时到达的数据,那么UDP没有用,因为它不可靠。

答案 1 :(得分:1)

不,这根本不是一个好方法。您现在将发送两倍的数据。 对于实时通信,UDP是最好的方法。您应该设计接收器算法来管理数据到达并对其进行排序,以及一些数据的到达。

此外,发送的数据类型也是决定因素。如果它是一种财务类型的交易,udp不是一个好主意。但那时你应该在不同的网络上。

如果是视频数据,实时非常重要,可以容忍损失。

因此,看看您是否可以使用数据属性来管理udp连接。

答案 2 :(得分:1)

UDP具有非常具体的用例。即说一个发送玩家坐标的在线游戏。您说明了订单并且需要确认,因此TCP似乎是最合理的方法。

虽然只是为了扭转局面,TCP有时会让你感到惊讶,并且在特定情况下会更好地表现。

TCP会在数据通过网络发送之前尝试缓冲数据(更有效地利用带宽)。另一方面,UDP立即将数据包放入网络。

现在想象一下,在网络上写下大量的小数据包,UDP可能会导致拥塞,而TCP可以得到更好的控制。

相关问题