【发布时间】:2023-04-11 05:47:01
【问题描述】:
我正在使用 TCP 套接字连接到某个网页,因为它将在循环中运行,尝试创建套接字、连接、发送数据,然后接收然后关闭套接字。问题是 s.connect() 在随机迭代和特定网站上超时。我读到了 TCP time_wait 所以
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
添加时没有运气。然后在每次迭代后睡眠一秒钟,但仍然没有运气。 我应该注意到它在另一个较慢的网络中运行良好,但在我试图运行代码的快速网络中却不行。 我认为以下伪代码可以更清楚地说明:
while(1)
{time.sleep(1)
s = socket.socket() #TCP socket creation
s.settimeout(2) # 2 seconds for time-out which is more than needed
s.connect()
s.send(message) #which is a HTTP get request
s.recv() # which is a HTTP response
s.close()}
我的代码例程遵循这些步骤,每个套接字方法都正确实现,但我在连接时遇到超时。我确信服务器运行正常。我怀疑它可能与 TCP time_wait 有关,但 cmets 似乎不同意
【问题讨论】: