Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 当I`sock.recv(..)超过发送给我的字节数时会发生什么?_Python_Sockets_Networking - Fatal编程技术网

Python 当I`sock.recv(..)超过发送给我的字节数时会发生什么?

Python 当I`sock.recv(..)超过发送给我的字节数时会发生什么?,python,sockets,networking,Python,Sockets,Networking,假设我使用套接字连接到服务器。我已经调用了sock.recv(1000),但服务器只向我发送了500字节 在我的实验中,sock.recv在接收到500字节后返回 但情况会一直如此吗 或者,如果传递给sock.recv的参数大于它将接收到的字节数,sock.recv是否可能继续等待 一次接收的最大数据量由bufsize指定 这是允许的最大值,不是等待的数量 有一个可选的flags参数,其含义与Unix系统调用相同。其中一个值是: MSG_WAITALL(自Linux 2.2以来) 此标志要求操作

假设我使用
套接字连接到服务器。我已经调用了
sock.recv(1000)
,但服务器只向我发送了500字节

在我的实验中,
sock.recv
在接收到500字节后返回

但情况会一直如此吗

或者,如果传递给sock.recv的参数大于它将接收到的字节数,
sock.recv
是否可能继续等待

一次接收的最大数据量由
bufsize
指定

这是允许的最大值,不是等待的数量

有一个可选的
flags
参数,其含义与Unix系统调用相同。其中一个值是:

MSG_WAITALL(自Linux 2.2以来)
此标志要求操作块在完全关闭之前停止 请求得到满足。但是,呼叫返回的次数可能仍然较少 如果捕获到信号、发生错误或 发生断开连接,或者要接收的下一个数据是 与返回的类型不同。此标志无效 用于数据报套接字

因此,如果使用此选项,它将等待收到1000字节,除非首先关闭连接

如果没有该选项,它将等待任何可用的内容,然后返回它,直到指定的
bufsize

来自:

一次接收的最大数据量由
bufsize
指定

这是允许的最大值,不是等待的数量

有一个可选的
flags
参数,其含义与Unix系统调用相同。其中一个值是:

MSG_WAITALL(自Linux 2.2以来)
此标志要求操作块在完全关闭之前停止 请求得到满足。但是,呼叫返回的次数可能仍然较少 如果捕获到信号、发生错误或 发生断开连接,或者要接收的下一个数据是 与返回的类型不同。此标志无效 用于数据报套接字

因此,如果使用此选项,它将等待收到1000字节,除非首先关闭连接


如果没有该选项,它将等待任何可用的内容,然后返回该内容,直到指定的
bufsize

它将等待指定的超时或直到读取适当数量的字符并返回它所具有的字符数available@JoranBeasley这是评论部分,为请求澄清和与人争论而设计的区域。如果您认为自己知道答案,请在下面给出(即答案部分),以便同行评审。谢谢。它将等待指定的超时,或者直到读取适当的字符数并返回它的字符数available@JoranBeasley这是评论部分,一个要求澄清和与人争论的区域。如果您认为自己知道答案,请在下面给出(即答案部分),以便同行评审。谢谢。这个故事的寓意和以往一样,是阅读文档。因此,如果我不使用这个选项,它会等到收到字节或超时?不,这个选项让它等待,它通常不会等待。它通常会在有任何可用内容时立即返回可用内容。这个故事的寓意,一如既往,正在阅读文档。因此,如果我不使用此选项,它将等待直到收到字节或直到超时?不,此选项使其等待,它通常不等待。它通常会在任何可用内容可用时立即返回任何可用内容。