Python socket.sendall()函数

2024-04-26 12:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Tutorial on Network Programming with Python,在本文中,作者说“sendall()函数应该只与阻塞套接字一起使用。”

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

PyNet的作者是对的吗?


Tags: 函数文档stringonwith情况作者network
2条回答

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

有疑问时,check the source

socket_sendall显然,一旦send()返回-1,它就会放弃,如果您在非阻塞套接字上调用它而不调用poll()或select(),它就会这样做(使用EAGAIN或EWOULDBLOCK的errno)。(当套接字不阻塞时,internal_select函数跳过调用poll()/select()。)

所以我认为PyNet的作者是正确的。

相关问题 更多 >