什么VB6套接字组件可以重用绑定端口?

时间:2010-07-22 19:09:33

标签: sockets vb6 winsock

我正在使用Winsock控件更新用VB6编写的遗留代码。本质上,我正在尝试通过本地网络连接4台计算机,以便计算机可以在需要时在彼此之间共享文件。最初,一旦建立连接,他们就无限期地抓住它们。然而,这些在12-24小时后会出错,并且无法重新建立。

更糟糕的是,整个网络都处于严密的安全状态,我们只有一定数量的端口可以使用(他们的防火墙阻止所有其他端口。)我怀疑网络安全负责关闭长时间处于非活动状态的连接,这是导致我们不稳定的原因(我们的测试无限期地运行,如果我们重新启动任何计算机,则会重新建立。)

我的想法是只在需要发送文件时按需建立连接,以避免这种可能性。我遇到的问题是you cannot connect through the same port for four minutes。因此,在四分钟窗口中只能发送一个文件(除非您同时拥有所有文件,但它们是在不同时间生成的。)使用三个端口允许一次发送三个文件(每个文件一个) )然后我被锁了四分钟。我可以继续添加端口,但这看起来不够优雅,并且在最坏的情况下不会被他们的IT部门允许。

有什么想法吗?我找不到允许可重用绑定端口的VB6的任何其他套接字控件。

1 个答案:

答案 0 :(得分:0)

“四分钟延迟”是每个连接,其中TCP连接是由本地IP,本地端口#,远程IP和远程端口#组成的4元组。

对于尝试使用相同的localport值重复建立与服务器的连接的客户端,这通常只是一个问题。对于Winsock控件,您可以尝试在尝试每个与远程服务器的新连接之前将LocalPort设置为0。

另一种可能避免在TIME-WAIT中建立连接的方法是确保在另一端引发CLOSE事件时主动关闭连接。

使用3个端口发送3个文件似乎有点奇怪。我不认为这比使用单个连接一个接一个地发送3个文件有任何表现。