我正在查看python标准库的套接字编程模块,我注意到了一个函数socket.setblocking
。文档提到将套接字设置为非阻塞模式意味着如果数据没有立即通过套接字发送,或者在尝试从套接字读取时数据不可用,则会引发错误。
我无法理解此功能可能有用的用例。我正在Linux机器上工作(以防万一这个问题的答案取决于操作系统)。
谢谢!
答案 0 :(得分:0)
当您将套接字设置为阻塞时,套接字将等待该套接字上的指定时间。当它在套接字上等待时,您的程序无法执行任何操作。在等待时间结束时,它会引发错误。有时你不想阻止发生。 一个很好的用例可能是当您使用多个套接字在单线程程序上发送接收消息时。您不希望在等待发送或接收消息时阻塞套接字而不是您可能想要检查每个套接字是否有要发送或接收的消息,因此您不希望阻塞时间或阻塞时间有限你循环通过套接字。 This将对python套接字进行更深入的讨论。