关闭后应立即提供端口吗?

时间:2015-06-06 22:40:56

标签: sockets tcp port

我在Python中用两个客户端和一个服务器编写了一个简单的TCP / IP服务器。目前,当我尝试在同一端口关闭后立即重新运行程序时,shell会通知我端口正忙。

我认为这应该表明某种程度上没有正确关闭某个连接,但我似乎无法找到任何挥之不去的套接字。

我的问题是,这个假设是否正确?我是否打开一个插座或者这种行为是否正常?如果是这样,有没有人对如何找到它有任何建议?

在服务器端,我打开两个连接并将它们放入一个元组中,这样我就可以循环遍历它们了:

    (self.con1, rec1) = self.s.accept()
    (self.con2, rec2) = self.s.accept()
    self.con = (self.con1, self.con2)

以下是足以关闭这些连接的代码吗?

    self.con1.close()
    self.con2.close()

是否有可能将连接放入元组中是否会创建一个可能会延迟的新连接副本?

1 个答案:

答案 0 :(得分:2)

这是正常的。 TCP为持续几分钟(最大段寿命的两倍)的端口定义TIME_WAIT状态,在此期间它们不能被重用。它是一种数据完整性度量。您可以通过在绑定套接字之前设置Error: Syntax error, unrecognized expression: [data-name^=O'] 选项来克服它。