gpt4 book ai didi

python - 当 Python 套接字连接失败时正确设置超时

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:31 25 4
gpt4 key购买 nike

我开始学习Python套接字和TCP/IP模型,所以我才刚刚开始。我有这段简单的代码,可以按预期正常工作:

import socket
from datetime import datetime

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
start = datetime.now()
try:
s.connect(("www.stackoverflow.com", 80))
s.close()

except Exception as e:
print "Error : ", e

print datetime.now() - start

在这种情况下,它可以正常工作,但如果我更改端口并使用另一个端口,例如 81(仅用于测试),则套接字不会连接(如预期)。但我必须等待大约 20 秒才能执行 print 语句(最后一行)。我想了解如何使其更快,因此当连接失败或端口关闭时,我会收到响应错误,并且不会等待太多时间。我也想了解为什么它有这种行为,以及如何正确设置超时。可能这是一个新手问题,但我们将不胜感激您的所有回复和建议。非常感谢。

最佳答案

使用socket.settimeout()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                           
s.settimeout(1.0)

这会将超时设置为 1 秒。

socket.settimeout(value)

Set a timeout on blocking socket operations. The value argument can be a nonnegative float expressing seconds, or None. If a float is given, subsequent socket operations will raise a timeout exception if the timeout period value has elapsed before the operation has completed. Setting a timeout of None disables timeouts on socket operations. s.settimeout(0.0) is equivalent to s.setblocking(0); s.settimeout(None) is equivalent to s.setblocking(1).

关于python - 当 Python 套接字连接失败时正确设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870127/

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