【发布时间】:2019-01-07 09:00:08
【问题描述】:
我正在尝试在以下 python 代码中使用标志“MSG_DONTWAIT”:
RECV_BUFFER_SIZE = 1024
buff = memoryview(bytearray(RECV_BUFFER_SIZE))
x = client_socket.recv_into(buff, RECV_BUFFER_SIZE, socket.MSG_DONTWAIT)
我只是从套接字读取。
奇怪的是,当我使用 'MSG_WAITALL' 标志时,代码可以正常工作,但是它失败并出现以下错误:
x = client_socket.recv_into(buff, RECV_BUFFER_SIZE, socket.MSG_DONTWAIT)
AttributeError: 模块 'socket' 没有属性 'MSG_DONTWAIT'
当我尝试使用存在 'MSG_WAITALL' 的同一类 MsgFlag 中的 'MSG_DONTWAIT' 时。我在 Windows 平台上运行它。
【问题讨论】:
-
可能是平台特定的,你是不是碰巧在 Windows 上?
-
是的,在 Windows 上运行它!
-
可能是
fluent的版本问题。 github.com/fluent/fluent-logger-python/issues/129 -
如何在我的系统上更新它?我记得两天前我刚刚在我的系统上安装了最新版本的 python!
-
正如@bgse 假设的那样,它是特定于平台的。 WinSock 没有实现该常量,因此它在 Windows 安装的 Python 套接字包中不可用。
标签: python python-3.x windows