病毒扫描能关闭Java TCP套接字连接吗?

3

我有一个运行于托管Windows 2008服务器上的 Java 1.6 “客户端”。当“客户端”启动时,它会使用以下方式连接到外部机器:

socket = new Socket(host, port);

这个套接字连接每周都会关闭,还有一个问题是“服务器”无法识别已关闭的套接字。因此,当“客户端”尝试立即重新连接时,“服务器”认为它已经连接并禁止另一个连接。

我们现在才意识到这与病毒扫描程序的时间完美地吻合。

这些症状可能是由病毒扫描程序引起的吗?病毒软件来自Symantec,但我不知道更多信息。如果您认为有帮助,我可以获取这些详细信息。


1
我看过来自 Symantec 和 McAfee 等公司的病毒扫描软件和安全软件包做得更差。:) 无论如何,TCP/IP 连接可能会因各种原因而中断。你有没有办法让你的服务器代码能够接受客户端重新连接?这是更合适的修复方法。 - selbie
此外,您可以检查Windows事件日志(控制面板->管理工具->事件查看器),以查看在断开连接时是否发生了任何奇怪的网络连接更改。 - selbie
@selbie 那是最烦人的部分。服务器端继续认为连接是打开的一段时间。事件查看器是我们注意到 Symantec 正在运行的方式。 - gjrwebber
“禁止另一个连接”和“继续认为连接是打开的”究竟是什么意思?服务器不会表现出这样的行为。你有什么证据吗? - user207421
@selbie 我没有访问服务器代码的权限,但我可以联系开发人员。这是一个遗留系统,其协议无法更改。 - gjrwebber
显示剩余2条评论
1个回答

0
我认为更有可能的是中间某个部件认为打开时间太长,将套接字视为已超时并关闭它。
Java 套接字在向关闭流发送任何内容之前不会识别已关闭的流,因此您的问题可能是由此引起的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接