2013-03-05 79 views
0

我希望能够创建一个传输数据(字符串,数字数据,文档,图像和音频)的小程序。 我读过,UDP不检查数据包是否到达目的地(因此容易丢失数据),而TCP将重新发送丢失的数据包。短距离TCP或UDP

如果我在通过交叉电缆直接连接的两台计算机之间传输数据,是否会有大的数据丢失问题(使用UDP)?我认为不会有数据传输只有几米,并且不会通过任何其他硬件,如路由器/服务器。

我已经做了很少的网络编程,所以这是一个短的冒险,而不是使用记忆棒/ FTP /文件共享等来传输 数据。

+0

使用TCP;谁在乎电脑分开多远? – trojanfoe 2013-03-05 15:37:57

+0

人们投票TCP的原因很明显,但我个人会使用UDP。首先,我不喜欢TCP窗口机制。我认为这太复杂了,并且发生数据包丢失时不必要地降低吞吐量。其次,在现代网络中,除非你有硬件故障,否则数据包很少会丢失(如果有的话)。我会编写软件,以便发送方为每个UDP数据包编号,接收方检查每个数据包是否到达,如果数据包未到达则重新请求数据包。与TCP相比,简单,开销少得多。 – wookie919 2013-03-05 23:24:42

回答

1

听起来好像你的数据可以处理任何丢失的数据包,所以除非你要检查总结你的数据并验证所有东西都是通过它来使用TCP。

如果数据包可能丢失,那么您必须计划丢失数据或者计划丢失的数据。

编辑:

距离肯定会影响数据包的丢失,如果电缆足够长,你会体验到100%的损失。现在的问题是,您是否会看到以太网规格范围内的电缆长度损失有所不同。理论上,如果你的电缆在规范中,那么你不会丢失数据包,但这不能解决环境问题。您可以使用非常短的电缆长度,该电缆长度与具有严重数据损坏的交流电源线并行运行。

您可以接受或不接受数据丢失。如果没有,那么你应该使用TCP。

+0

如果距离会影响数据包的丢失率,这并不真正回答。我知道我的问题并不清楚,我对此很抱歉。 – Ewan 2013-03-05 18:29:17

+0

将我的评论移至答案,以便更好地回答您的问题。 – 2013-03-05 19:41:44

1

使用TCP。它的设计旨在确保按顺序完整和准确的数据传输。 UDP不是那些。数据包可以沿路径的任何位置丢弃,包括发送计算机内部的。数据包可以因任何原因重新订购​​ - UDP不关心订单。你可能可以忽略的是数据损坏的可能性 - 像这样的直接传输不会有这样的问题。

但严重的是,使用TCP。