【发布时间】:2014-02-11 23:50:34
【问题描述】:
我有一个运行在托管 Windows 2008 服务器上的 java 1.6“客户端”。当“客户端”启动时,它使用以下方式连接到外部机器:
socket = new Socket(host, port);
此套接字连接每周都会关闭,并增加了“服务器”无法识别关闭的套接字的问题。因此,当“客户端”尝试立即重新连接时,“服务器”认为它已经连接并禁止另一个连接。
我们现在才意识到这与病毒扫描程序完全吻合。
这些症状可能是由病毒扫描程序引起的吗?病毒软件来自赛门铁克,但我不知道更多。如果您认为有帮助,我可以获取这些详细信息。
【问题讨论】:
-
我看到赛门铁克和迈克菲等公司的病毒扫描程序和安全软件包的表现要差得多。 :) 无论如何,TCP/IP 连接可能因各种原因而中断。有什么方法可以使您的服务器代码能够接受来自客户端的重新连接?这是更合适的解决方法。
-
另外,您可以检查 Windows 事件日志(控制面板 -> 管理员工具 -> 事件查看器),看看在断开连接时是否发生了任何奇怪的网络连接变化。
-
@selbie 这是最烦人的部分。服务器端继续认为连接打开了一段时间。事件查看器是我们注意到 symantec 正在运行的方式。
-
您可以访问服务器源代码吗?一个很好的解决方法是让服务器即使在客户端连接后也保持其侦听套接字打开。当它检测到同一个客户端再次重新连接时,它会简单地丢弃旧连接。这可能意味着您的协议必须具有某种语义,即客户端使用与 IP/端口不同的名字来标识自己。
-
“不允许其他连接”和“继续认为连接已打开”到底是什么意思?服务器不会那样做。你有什么证据?
标签: java sockets tcp antivirus virus-scanning