epoll
程序员文章站
2022-03-16 10:35:26
...
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())
上一篇: fastlane感悟
下一篇: C语言——对循环的加深理解!