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完成伪并发操作的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。