server端并发聊天室
服务端
1 import socket,time,select 2 ip_port = ('127.0.0.1',8000) 3 sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 4 sk.bind(ip_port) 5 sk.listen(5) 6 inputs = [sk,] 7 while 1: 8 r,w,e = select.select(inputs,[],[],5) 9 for obj in r: #遍历r 10 if obj == sk: #如果obj == sk,那就是一个新的客户端链接 11 conn,addr = obj.accept() #绑定conn,addr 12 print(conn) 13 inputs.append(conn) #之后把conn加入到inputs列表中,等待下一次来数据 14 else: #如果obj != sk,也就是 == conn,那就接收数据,然后发送数据 15 data = obj.recv(1024) 16 print(data.decode('utf8')) 17 inp = input('回答客户%s号>>>'%inputs.index(obj)) #客户号是inputs列表中发送来数据的conn的索引 index():Return first index of value.返回值第一个数据的 18 obj.sendall(bytes(inp,'utf8')) #用obj发送 19 print('waiting...') #5s循环一次
客户端
1 from socket import * 2 3 sk = socket() 4 sk.connect(('127.0.0.1',8000)) 5 while 1: 6 inp = input('>>>').strip() 7 sk.sendall(bytes(inp,'utf8')) 8 data = sk.recv(1024) 9 print(str(data,'utf8'))
浙公网安备 33010602011771号