标签:code import server from 客户端 dal ted int llb
1 import selectors, socket 2 3 sel = selectors.DefaultSelector() 4 5 6 def accept(sock, mask): 7 coon, addr = sock.accept() 8 print(‘accepted‘, coon, ‘from‘, addr) 9 coon.setblocking(False) 10 sel.register(coon, selectors.EVENT_READ, read) 11 12 13 def read(coon, mask): 14 try: 15 data = coon.recv(1000) 16 if data: 17 print(‘echoing‘, repr(data), ‘to‘, coon) 18 coon.sendall(data) 19 else: 20 raise Exception 21 except: 22 print(‘closing‘, coon) 23 sel.unregister(coon) 24 coon.close() 25 26 27 sock = socket.socket() 28 sock.bind((‘127.0.0.1‘, 8090)) 29 sock.listen(100) 30 sock.setblocking(False) 31 sel.register(sock, selectors.EVENT_READ, accept) # 注册一个对象,和触发该对象后要执行的函数。 32 print(‘server..............‘) 33 while True: 34 35 events = sel.select() 36 for key, mask in events: 37 callback = key.data 38 callback(key.fileobj, mask) # key.fileobj是响应的那个对象,比如是socket
客户端
1 import socket 2 3 client_socket = socket.socket() 4 5 client_socket.connect((‘127.0.0.1‘,8090)) 6 while True: 7 a = input(‘....‘) 8 9 client_socket.sendall(a.encode()) 10 data = client_socket.recv(1024) 11 print(data.decode())
阻塞IO 非阻塞IO IO多路复用
标签:code import server from 客户端 dal ted int llb
原文地址:https://www.cnblogs.com/ch2020/p/12819756.html