我应该使用TCP还是UDP?

TTG*_*oup 2 udp tcp

我的应用程序需要从服务器到客户端逐帧发送视频数据.我在使用TCP或UDP之间摇摆不定.

从我的测试中,我发现了一些以下结果:

TCP:非常容易实现.

UDP:要向客户端发送一个帧(大约50KB),如果我为每个帧创建1个UDP包,则发送总是丢失帧.所以我必须将每个帧分成许多UDP包.这使得我的算法非常复杂,因为UDP协议可能会丢失包,并且包可能无序传递.另外,如果每个UDP包中的数据长度很大,那么很容易丢失.

我有以下几个问题:

  1. 我应该在这种类型的应用程序中使用TCP或UDP.

  2. 如果我想使用UDP来实现更快的传输,那么如何确定每个包中的数据长度在传输时不会轻易丢失?(这可能属于网络带宽?).

  3. 根据您的经验,您能估算出TCP更快的UDP有多少百分比?

很抱歉在帖子中有很多问题,但在我的应用程序中决定使用TCP或UDP之前我需要了解更多细节,这对我来说非常重要.

很多人,

T&T组

小智 5

由于您的应用程序流视频,您可能需要UDP.TCP和UDP之间的一个巨大差异(在这种情况下)是UDP不会像TCP那样尝试恢复丢失的数据包.每次跳过帧时都不希望重新加载视频,因为这需要很长时间,而UDP只会跳过丢失的帧.(如果右键单击Youtube视频,您可以看到流式传输视频时丢弃的数据包数量)