Python socket.sendall() 函数

16 投票
2 回答
20037 浏览
提问于 2025-04-16 18:58

我正在阅读一份名为Python网络编程教程的文档,里面的作者提到“sendall()这个函数应该只在阻塞套接字中使用。”

但是我在Python的官方文档中并没有看到这样的说明,socket.sendall(string[, flags])

那么,PyNet的作者说得对吗?

2 个回答

14

当你不确定的时候,可以查看源代码

socket_sendall 一旦 send() 返回 -1,就会停止继续发送。这个返回值会在你对一个非阻塞的套接字调用它时出现,特别是当你没有先调用 poll()select() 的时候。 (而且 internal_select 函数在套接字是非阻塞的时候,会跳过调用 poll()select()。)

所以我觉得 PyNet 的作者说得对。

撰写回答