发送强制发送X字节的UDP数据报

时间:2019-08-16 20:54:37

标签: sockets udp

我对sendto有一个基本问题:

假设我们希望目标接收到一个精确X字节的UDP数据包。这意味着,它不能接收少于X个字节的数据包(如果sendto返回少于X个字节,则有可能)。是否可以强制发送方发送X个字节,或者如果不可能的话甚至返回错误? (即,接收器要么将获得X字节的数据包,要么将不会获得该数据包)。

编辑: 如果发送的字节数始终为X,那么为什么返回值(发送的字节数)可能小于发送的数据的字节数(如 https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-sendto )并且是非负数?

1 个答案:

答案 0 :(得分:3)

  

这意味着它不能接收少于X个字节的数据包(如果sendto返回少于X个字节,则有可能)。

这永远不会在UDP套接字上发生。来自the send(2) manual page

  

如果消息太长而无法自动通过基础协议传递,则返回错误EMSGSIZE,并且消息不会传输。

简而言之,默认情况下,您所要求的行为已经存在。

相关问题