gpt4 book ai didi

python - 当网络套接字始终准备好读取时如何使用 select?

转载 作者:行者123 更新时间:2023-12-01 05:34:29 26 4
gpt4 key购买 nike

我像这样使用选择:

while True:
readReady, _, _ = select.select([src, dst], [], [])
for ready in readReady:
if ready == dst:
toRead = dst
toWrite = src
else:
toRead = src
toWrite = dst

toWrite.sendall(toRead.recv(10))

在发送所有数据之前,toWrite 是否阻塞并不重要。但问题是 select 立即返回,因为套接字已准备好读取,但没有数据。我如何等到真正有一些数据为止?

另外,print(toRead.recv(10))打印b'',它是空的(虽然我期望select阻止) 。套接字处于阻塞模式。

最佳答案

这是select API的一部分:如果select调用返回一个可读的套接字,则必须对其调用recv(),否则每次后续的 select 调用都会返回此套接字,因为该套接字仍然可读。

如果您 recv() 没有收到任何数据,则表明套接字已关闭。

关于python - 当网络套接字始终准备好读取时如何使用 select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com