我希望创建一个小程序来传输数据(字符串、数字数据、文档、图像和音频)。我读过UDP不检查数据包是否到达目的地(因此很容易丢失数据),而TCP会重新发送丢失的数据包。
如果我在通过交叉电缆以太网直接连接的两台计算机之间传输数据,是否会出现大的数据丢失问题(使用 UDP)?我认为不会有,因为数据只传输了几米,并且没有通过任何其他硬件,例如路由器/服务器。
我几乎没有做过网络编程,所以这是一个短暂的冒险,而不是使用记忆棒/FTP/文件共享等来传输数据。
我希望创建一个小程序来传输数据(字符串、数字数据、文档、图像和音频)。我读过UDP不检查数据包是否到达目的地(因此很容易丢失数据),而TCP会重新发送丢失的数据包。
如果我在通过交叉电缆以太网直接连接的两台计算机之间传输数据,是否会出现大的数据丢失问题(使用 UDP)?我认为不会有,因为数据只传输了几米,并且没有通过任何其他硬件,例如路由器/服务器。
我几乎没有做过网络编程,所以这是一个短暂的冒险,而不是使用记忆棒/FTP/文件共享等来传输数据。
听起来您的数据无法处理任何丢失的数据包,因此除非您要对数据进行校验和并验证所有内容是否通过,否则请使用 TCP。
如果数据包可能会丢失,那么您必须计划它们会丢失或以其他方式计划您的数据丢失。
编辑:
距离肯定会影响数据包的丢失,如果电缆足够长,您将经历 100% 的丢失。现在的问题是,您是否会看到在以太网规格范围内的电缆长度的损耗差异。从理论上讲,如果您的电缆符合规格,那么您不会丢失数据包,但这并不能解决环境问题。您的电缆长度可能非常短,与具有严重数据损坏的交流电源线平行。
您可以接受或不接受数据丢失。如果没有,那么您可能应该使用 TCP。
使用 TCP。它经过精心设计,以确保按顺序完成和准确的数据传输。UDP 不是这些。数据包可能会被丢弃在路径上的任何地方,包括发送计算机内部。数据包可以出于任何原因重新排序 - UDP 不关心顺序。您可能可以忽略的是数据损坏的可能性 - 像这样的直接传输不会有这样的问题。
但说真的,使用 TCP。