selectors简陋版群聊
s = selectors.DefaultSelector()
sock = socket.socket()
sock.bind(('127.0.0.1', 9999))
sock.listen()
logger.info(sock)
sock.setblocking(False)
def accept(sock, mask):
nwsock, raddr = sock.accept()
nwsock.setblocking(False)
s.register(nwsock, selectors.EVENT_READ, recv)
def recv(nwsock, mask):
data = nwsock.recv(1024)
logger.info(data)
for key in s.get_map().values():
if key.data == recv:
key.fileobj.send(data)
key = s.register(sock, selectors.EVENT_READ, accept)
logger.info(key)
while True:
events = s.select()
logger.info(events)
for key, mask in events:
callback = key.data
callback(key.fileobj, mask)