windows下用Python进行select套接字实验时,返回的r_list问题。

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。
https://img3.mukewang.com/5c83cedd0001c88e08540134.jpg这是为什么?


慕码人8056858
浏览 669回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python