无法在窗口中使用python 2.7或3.3从select模块访问常量POLLIN

时间:2014-04-07 21:03:25

标签: python python-2.7

所以我有一个脚本可以做到这一点。 (请注意,这不是实际的脚本,而是为简单起见包含错误的简约版本)

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节

0 个答案:

没有答案