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。這是為什么?
windows下用Python進行select套接字實驗時,返回的r_list問題。
慕碼人8056858
2019-02-25 15:13:28
