python socket recv timeout_如何正确使用python socket.settimeout()

2023-05-16

据我所知,当你调用socket.settimeout(value)并设置一个大于0.0的float值时,如果对socket.recv的调用等待的时间超过了,那么该套接字将引发一个scocket.timeout.指定的值.

但想象一下,我必须接收大量数据,并且我必须多次调用recv(),那么settimeout如何影响它?

给出以下代码:

to_receive = # an integer representing the bytes we want to receive

socket = # a connected socket

socket.settimeout(20)

received = 0

received_data = b""

while received < to_receive:

tmp = socket.recv(4096)

if len(tmp) == 0:

raise Exception()

received += len(tmp)

received_data += tmp

socket.settimeout(None)

代码的第三行将套接字的超时设置为20秒.每次迭代都会重置超时吗?只有当其中一次迭代超过20秒时才会引发超时?

A)我如何重新编码它,如果它花费超过20秒来接收所有预期的数据,它会引发异常?

B)如果我在读完所有数据后没有将超时设置为无,那么有什么不好的事情发生吗? (连接保持活跃状态​​,将来可以请求更多数据).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python socket recv timeout_如何正确使用python socket.settimeout() 的相关文章

随机推荐