selectors

版权声明:17602128911 https://blog.csdn.net/bus_lupe/article/details/88012204

server

import selectors
import socket

sel = selectors.DefaultSelector()

def accept(sock, mask):
    conn, addr = sock.accept()
    print('accepted', conn, 'from', addr)
    conn.setblocking(False)
    sel.register(conn, selectors.EVENT_READ, read)

def read(conn, mask):
    data = conn.recv(1000)
    if data:
        print('echoing', repr(data), 'to', conn)
        conn.send(data)
    else:
        print('closing', conn)
        sel.unregister(conn)
        conn.close()

sock = socket.socket()
sock.bind(('127.0.0.1', 8089))
sock.listen(100)
sock.setblocking(False)
sel.register(sock, selectors.EVENT_READ, accept)

while True:
    events = sel.select()
    for key, mask in events:
        callback = key.data
        callback(key.fileobj, mask)

client

import socket

sock = socket.socket()
sock.connect(('127.0.0.1', 8089))

while True:
    inp = input('>>>')
    sock.send(inp.encode('utf8'))
    data = sock.recv(1024)
    print(data.decode('utf8'))

猜你喜欢

转载自blog.csdn.net/bus_lupe/article/details/88012204