所以我有一个脚本可以做到这一点。 (请注意,这不是实际的脚本,而是为简单起见包含错误的简约版本)
import select
rmask = select.POLLIN|select.POLLERR|select.POLLHUP <--- ERROR
smask = select.POLLOUT|select.POLLIN|select.POLLERR|select.POLLHUP <--- ERROR
class PollSocket(SelectSocket):
def __init__(self, timer):
super().__init__(timer)
self.pollobj = select.poll()
self.pollobj.register(self.sock, smask)
def poll(self):
flags = []
if self.sending:
self.pollobj.register(self.sock, smask)
self.sending = False
else:
self.pollobj.register(self.sock, rmask)
try:
poll = self.pollobj.poll(self.timer.get_timeout())
except select.error as e:
print(str(e))
poll = []
if poll:
poll = poll[0][1]
if poll&select.POLLERR: flags.append('SOCKET_ERR') <--- ERROR
if poll&select.POLLHUP: flags.append('SOCKET_HUP') <--- ERROR
if poll&select.POLLIN: flags.append('SOCKET_RECV') <--- ERROR
if poll&select.POLLOUT: flags.append('SOCKET_SEND') <--- ERROR
return flags
def reset(self):
self.pollobj.unregister(self.sock)
self.sock.close()
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setblocking(0)
self.pollobj.register(self.sock)
我得到了这个错误。
rmask = select.POLLIN | select.POLLERR | select.POLLHUP
AttributeError:&#39; module&#39;对象没有属性&#39; POLLIN&#39;
我尝试过从select select导入所有select,但也失败了。
我想知道如何使用Windows系统从select中访问常量。
以下是选择lib页面的链接,以方便您使用。 https://docs.python.org/2/library/select.html
见第16.1.2节