【发布时间】:2023-03-22 02:58:01
【问题描述】:
我有一个 Python 应用程序,它使用带有 socket.MSG_DONTWAIT 标志的 UDP sendto/recvfrom。在 Linux 和 Mac OS X 中,这工作得很好。但是,此标志在 Windows 环境中不存在。
Windows 中的等效标志是什么?或者,如何在 Windows 中进行非阻塞 sendto/recvfrom?
【问题讨论】:
我有一个 Python 应用程序,它使用带有 socket.MSG_DONTWAIT 标志的 UDP sendto/recvfrom。在 Linux 和 Mac OS X 中,这工作得很好。但是,此标志在 Windows 环境中不存在。
Windows 中的等效标志是什么?或者,如何在 Windows 中进行非阻塞 sendto/recvfrom?
【问题讨论】:
socket.setblocking(False) 在任何平台上将您的套接字切换到非阻塞模式。在创建套接字时调用一次,您可以删除所有 MSG_DONTWAIT 标志。
如果您需要在阻塞和非阻塞 I/O 之间切换(通常情况并非如此),请在每次想要在这两者之间切换时调用 socket.setblocking。
【讨论】: