socket + select 完成伪并发操作的实例
实例如下:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importsocket
#创建一个socket对象
sk1=socket.socket()
#绑定ip和端口
sk1.bind(('127.0.0.1',8001))
#监听
sk1.listen()
#定义一个字典存放客户端发送的信息
message_dict={}
#inputs用于存放socket对象
inputs=[sk1]
#哪一个客户端发送信息就把哪一个客户端的存放进output
output=[]
importselect
whileTrue:
r_list,w_list,e_list=select.select(inputs,output,inputs,1)
print('正在监听的socket%d'%len(inputs))
print(r_list)
forsk_or_conninr_list:
ifsk_or_conn==sk1:
conn,address=sk_or_conn.accept()
inputs.append(conn)
message_dict[conn]=[]
else:
try:
data_bytes=sk_or_conn.recv(1024)
exceptExceptionasex:
inputs.remove(sk_or_conn)
else:
data_str=str(data_bytes,encoding='utf-8')
message_dict[sk_or_conn].append(data_str)
output.append(sk_or_conn)
forconninw_list:
data_message=message_dict[sk_or_conn][0]
delmessage_dict[sk_or_conn][0]
conn.sendall(bytes(data_message+'好',encoding='utf-8'))
output.remove(conn)
以上这篇socket+select完成伪并发操作的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。