import selectors #epoll模块
import socket

epoll = selectors.EpollSelector() #生成一个epoll
server = socket.socket() #生成套接字


server.bind(('', 8082))
server.listen(100)

#回调函数 用来生成对等连接套接字
def create_conneciton(server):
conn, addres = server.accept() #生成对等连接套接字

#处理消息的函数注册
epoll.register(conn, selectors.EVENT_READ, read_data)
return conn


#回调函数 用来处理消息
def read_data(conn):
data = conn.recv(1024)
if data:
print(data)
conn.send(data)
else:
epoll.unregister(conn) #删掉注册事件


#注册回调函数
epoll.register(server, selectors.EVENT_READ, create_conneciton)


while True:
events = epoll.select() #去操作系统查询 有多少人连接/有没有消息

for key,mask in events:
sock = key.fileobj #连接客户端的套接字server/处理消息conn
callback = key.data #回调函数 create_conneciton/read_data

callback(sock) #回调create_conneciton(server)/read_data(conn)
import socket

client = socket.socket()
client.connect(('127.0.0.1', 8082))

while True:
data = input('输入数据:')
client.send(data.encode())
recv_data = client.recv(1024)
print(recv_data.decode())