IO多路复用,实现多线程监听
Posted 200ML
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO多路复用,实现多线程监听相关的知识,希望对你有一定的参考价值。
服务端 import socket sk1 = socket.socket() sk1.bind((‘127.0.0.1‘,8001)) sk1.listen() sk2 = socket.socket() sk2.bind((‘127.0.0.1‘,8002)) sk2.listen() sk3 = socket.socket() sk3.bind((‘127.0.0.1‘,8003)) sk3.listen() inp = [sk1,] import select while True: print(len(inp)) #r_list 接收inp参数 如果有用户来链接 它就会感知到, #w_list 可以写固定句柄 进行监听 如果 [sk1,sk3] #e_list 监听发生错误的句柄,如果有把就把它移除掉, 如下面for循环 r_list, w_list, e_list= select.select(inp,[],[],1) for i in r_list: # print(i,‘\n‘,sk1.accept()) if i == sk1: # print(i.accept(),‘\n‘,sk1.accept()) conn,address = i.accept() inp.append(conn) print(inp) else: try: str(conn.recv(1024),encoding=‘utf-8‘) conn.sendall(bytes(‘hello‘,encoding=‘utf-8‘)) except Exception as e: inp.remove(i)
客户端 import socket obj = socket.socket() obj.connect((‘127.0.0.1‘,8001)) inp = input(‘‘) obj.sendall(bytes(inp,encoding=‘utf-8‘)) r = str(obj.recv(1024),encoding=‘utf-8‘) print(r)
以上是关于IO多路复用,实现多线程监听的主要内容,如果未能解决你的问题,请参考以下文章