0

我有一个通过 LAN 与其他客户端实时通信的应用程序。该应用程序要求数据包有序且全部到达。它还需要尽可能快的传输,在这件事上我似乎对 TCP 有一些问题。

所以我在想这个,作为一个没有经验的网络程序员,如果我先发送一个 UDP 协议消息,然后用 TCP 发送相同的数据会怎样。如果 UDP 消息到达,我会尽快收到它,否则我仍然有 TCP 消息,以确保我至少会收到数据包。显然,我会通过给每条消息一个 ID 或类似的东西来确保我不会两次读取相同的数据。

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

4

3 回答 3

2

不,这不是一个好方法。

您将网络带宽翻了一番,并显着增加了网络代码的复杂性,但收益却微乎其微。

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

于 2012-09-02T11:22:09.013 回答
1

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

发送的数据类型也可能是决定性因素。如果它的交易是金融类的,udp 不是一个好主意。但是你应该在不同的网络上。

如果是视频数据,实时性很重要,损失是可以容忍的。

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

于 2012-09-02T11:25:39.297 回答
1

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

尽管只是为了混合在一起,TCP 有时会让您感到惊讶,并且在特定情况下会更好地发挥性能。

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

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

于 2012-09-02T11:29:03.033 回答