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'))

 

posted on 2018-08-05 21:54  胡慢  阅读(167)  评论(0)    收藏  举报

导航