window下利用select验证套接字读写,但是select返回的r_list文件描述符集似乎是不变的,代码如下,求解答,谢谢
接收端:
import select,socket sk=socket.socket() sk.bind(("127.0.0.1",5002)) sk.listen(5) inputs=[sk] outputs=[]while True: r_list,w_list,e_list=select.select(inputs,outputs,inputs,1) print(r_list) print("正在监听的端口数:%d"%len(inputs)) for sk_conn in r_list: if sk_conn==sk: conn,addr=sk.accept() conn.recv(1024) inputs.append(conn) print(inputs) else: try: rec=sk_conn.recv(1024) except Exception as ex:err else: print("收到:"+str(rec,encoding="utf-8")
发送端:
import socket ck=socket.socket() ck.connect(("127.0.0.1",5002)) ck.sendall(bytes("hello",encoding="utf-8")) ck.close()
发送端sendall一次后关闭,接收端r_list应该经历从0-1(sk)-2(sk,conn)-0,的过程,但是实际上r_list之后一直有1个文件描述符conn。
相关分类