多路復用
阿新 • • 發佈:2017-09-01
pri blocking cnblogs star 狀態 nec bin art 對象
服務端 from socket import * import time import select server = socket(AF_INET,SOCK_STREAM) server.bind((‘127.0.0.1‘,8081)) server.listen(3) server.setblocking(False) #accept變為非阻塞狀態, print(‘server startting...‘) reads_l = [server,] #每次來一個客戶端,添加到列表 while True: r_l,_,_ = select.select(reads_l,[],[]) for obj in r_l: #接收到的對象 if obj == server: #server.accept conn,addr = server.accept conn,addr = obj.accept() #每個對象都有conn,addr reads_l.append(conn) else: # conn.recv 接收到的數據 data = obj.recv(1024) #obj = conn obj.send(data.upper()) 客戶端 from socket import * client = socket(AF_INET,SOCK_STREAM) client.connect((‘127.0.0.1‘,8081)) while True: msg = input(‘p;ease:‘).strip() if not msg:continue client.send(msg.encode(‘utf-8‘)) data = client.recv(1024) print(data.decode(‘utf-8‘))
多路復用