当我先关闭一个TCP连接再在同一个端口上开户一个连接的时候为什么会得到错误号 60
主要软件:
主要软件版本:
主要软件修正版本:
次要软件: N/A
硬件: Compact FieldPoint>>Controllers
问题: 我使用 VxWorks 的实时控制器并且我在一个特定的端口上打开了一个TCP连接。 然后当我关闭这个连接以后, 马上在同样的端口上开户另一个连接。 此时 TCP Open Connection VI 返回:
Error 60 occurred at TCP Open Connection in MyVI.vi。 下面的程序框图截屏给出了重现这个问题的方法:
为什么会产生这个错误呢?我怎么样才能修复它呢?
解答: 这种错误情况发生在 VxWorks 操作系统上是可以理解的, 并且在其它的操作系统上也会出现同样的情况。 这种情况产生的原因是一个称为 TCP TIME-WAIT 状态, 它会在一个端口关闭以后将其封闭一段时间,大概一分钟左右。 这种状态允许任何这个连接的数据包仍然存在于网络中,或者被接收到,或者在一个新连接在这个端口上被打开前超时, 这样可以避免一个老连接的数据被新连接接收到。
一般来说, 最好让操作系统自己来选择本地的端口。 如果你需要使用一个特定的端口, 你必须要允许你在关闭一个旧连接到再此打开同一个端口的新连接之间有几分钟的等待时间来完成 TIME-WAIT 状态。
相关链接: KnowledgeBase 484DI6XL: Why Do I Receive Error 60 from Create Listener for 60 Seconds?
附件:
报告日期: 10/13/2008
最近更新: 04/28/2009
文档编号: 4QCGO2RQ
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.