Python socket.sendall()函数

nik*_*nik 13 python sockets

我正在阅读使用Python进行网络编程的教程,在本文档中,作者说"函数sendall()只能用于阻塞套接字."

但是我没有在Python文档中看到任何这样的条件,socket.sendall(string [,flags]).

PyNet的作者是对的吗?

Nem*_*emo 11

如有疑问,请检查来源.

socket_sendall如果你在没有调用poll()或select()的情况下在非阻塞套接字上调用它,那么send()返回-1就会明确放弃,它将执行(使用EAGAIN或EWOULDBLOCK的errno).(internal_select当套接字是非阻塞时,函数会跳过调用poll()/ select().)

所以我想说PyNet的作者是正确的.


cab*_*nga 5

sendall()在非阻塞套接字上没有意义.如果它不能一次发送所有数据,它必须阻止,否则它不会被称为"sendall".