2013-03-20 72 views
-1

我们已经编写了一个应用程序,其中客户机 - 服务器通信与IOCP概念一起使用。如何在不重新启动服务器的情况下删除套接字的close_wait状态?

客户端通过无线接入点连接到服务器。

当网络中发生暂时断开连接时,可能会导致CLOSE_WAIT状态。这可能表示 客户端正确关闭了连接。但服务器仍然打开其套接字。 如果端口(服务器和客户端所说的端口)太多的实例处于CLOSE_WAIT状态,那么在最高峰时,服务器停止运行,从而拒绝连接。这是完全令人沮丧的。在这种情况下,用户必须重新启动服务器以通过清除内存来清除所有close_wait状态。当服务器重新启动时,客户端再次尝试连接到server.Server再次调用accept命令,但在接受新连接之前,应在服务器端关闭以前的连接,我们怎么做到这一点?

如何在不重启服务器的情况下移除套接字的close_wait状态?

有没有其他方法可以避免服务器重启?

我们也知道,如果所有可用的临时端口都分配给客户端应用程序,那么客户端会遇到称为TCP/IP端口耗尽的情况。当TCP/IP端口耗尽时,客户端端口 不能保留,并且在试图通过TCP/IP套接字连接到服务器的客户端应用程序中会发生错误。 如果发生这种情况,那么我们需要增加动态分配给客户端TCP/IP套接字连接的临时端口的上限范围。

参考: http://msdn.microsoft.com/en-us/library/aa560610%28v=bts.10%29.aspx

让我们知道这另一种方法是有用或没有?

在此先感谢。

问候 Amey

回答

0

修复服务器代码。

服务器应该读取一个超时,如果超时到期,它应该关闭套接字。

+0

你能详细解释一下吗? – 2013-03-21 11:53:35

+0

缺少什么细节?如果您发布了任何内容,我可以对您的代码发表评论,但除了上述内容之外,我看不到其他内容。 – EJP 2016-01-19 01:40:45

相关问题