Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-是sendto()';它的返回值是无用的吗?_Python_Udp_Sendto - Fatal编程技术网

Python-是sendto()';它的返回值是无用的吗?

Python-是sendto()';它的返回值是无用的吗?,python,udp,sendto,Python,Udp,Sendto,在我最近的项目中,我需要使用UDP协议来传输数据。 如果我使用size=s.sendto(data,(,)发送数据,UDP协议会确保数据打包到一个UDP数据包中吗? 如果是这样,那么size==len(数据)是否总是True? 有什么我误解的吗 更准确地说,“sendto()”会将我的数据分割成几个较小的数据块,然后将每个数据块打包成UDP数据包进行传输吗?UDP数据包的长度是有限的。如果数据太大,返回值不能等于长度。也有一些情况,如发送缓冲区不足、网络故障。大小仅表示已发送到发送缓冲区的字节。

在我最近的项目中,我需要使用UDP协议来传输数据。 如果我使用
size=s.sendto(data,(,)
发送数据,UDP协议会确保数据打包到一个UDP数据包中吗? 如果是这样,那么
size==len(数据)
是否总是
True
? 有什么我误解的吗


更准确地说,“sendto()”会将我的数据分割成几个较小的数据块,然后将每个数据块打包成UDP数据包进行传输吗?

UDP数据包的长度是有限的。如果数据太大,返回值不能等于长度。也有一些情况,如发送缓冲区不足、网络故障。大小仅表示已发送到发送缓冲区的字节。

最后,我从“UNIX网络编程”中得到了答案, 第2.11章缓冲区大小和限制,UDP输出部分

这次,我们将套接字发送缓冲区显示为虚线框,因为它实际上并不存在。 UDP套接字有一个发送缓冲区大小(我们可以使用SO_SNDBUF套接字更改该大小) 选项,第7.5节),但这只是最大大小UDP的上限 可以写入套接字的数据报。如果应用程序写入的数据报大于 返回套接字发送缓冲区大小EMSGSIZE