我使用2台计算机与一个应用程序发送和接收udp数据报.
当我通过应用程序将文件作为udp数据报发送时,经常
没有流量控制(ICMP禁用)
,我得到2个包改变他们的顺序,因此 - 包丢失.
有没有办法确保winsock和send()将以相同的方式发送数据包?
或者操作系统在做什么?我已经禁用了防火墙,并且计算机之间没有连接硬件开关(它们是直接连接的).需要网络设备配置?
谢谢
UDP是一种轻量级协议,设计上不处理数据包排序等问题.如果您需要强大的数据包传输和排序,TCP是更好的选择.
UDP通常设计用于丢包可接受或优于TCP必须重新请求数据包时发生的延迟的应用程序.因此,UDP通常用于媒体流.
如果您仅限于使用UDP,则必须开发一种识别无序数据包并重新排序的方法.
UDP不保证您的数据包将按顺序到达.(它甚至不能保证您的数据包将全部到达.)如果您需要这种级别的健壮性,那么最好使用TCP.或者,您可以在数据报中添加序列标记,并在另一端重新排列它们,但为什么要重新发明轮子呢?
有没有办法确保winsock和send()将以与到达目的地相同的方式发送数据包?
它称为TCP。
或者,尝试使用可靠的UDP协议(例如UDT)。我猜您可能在小型嵌入式平台上,因此您需要像Bell Lab的RUDP这样的更紧凑的协议。