病毒扫描可以关闭 java TCP 套接字连接吗?

Posted

技术标签:

【中文标题】病毒扫描可以关闭 java TCP 套接字连接吗?【英文标题】:Can a virus scan close a java TCP socket connection? 【发布时间】:2014-02-11 23:50:34 【问题描述】:

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

socket = new Socket(host, port);

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

我们现在才意识到这与病毒扫描程序完全吻合。

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

【问题讨论】:

我看到赛门铁克和迈克菲等公司的病毒扫描程序和安全软件包的表现要差得多。 :) 无论如何,TCP/IP 连接可能因各种原因而中断。有什么方法可以使您的服务器代码能够接受来自客户端的重新连接?这是更合适的解决方法。 另外,您可以检查 Windows 事件日志(控制面板 -> 管理员工具 -> 事件查看器),看看在断开连接时是否发生了任何奇怪的网络连接变化。 @selbie 这是最烦人的部分。服务器端继续认为连接打开了一段时间。事件查看器是我们注意到 symantec 正在运行的方式。 您可以访问服务器源代码吗?一个很好的解决方法是让服务器即使在客户端连接后也保持其侦听套接字打开。当它检测到同一个客户端再次重新连接时,它会简单地丢弃旧连接。这可能意味着您的协议必须具有某种语义,即客户端使用与 IP/端口不同的名字来标识自己。 “不允许其他连接”和“继续认为连接已打开”到底是什么意思?服务器不会那样做。你有什么证据? 【参考方案1】:

我认为中间的东西更有可能认为套接字在打开这么长时间后超时并关闭它。

Java-Sockets 在向关闭的流发送内容之前无法识别关闭的流,因此您的问题可能是由此引起的。

【讨论】:

以上是关于病毒扫描可以关闭 java TCP 套接字连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java 进程间通信

java 数据流关闭后 对应的Socket也会自动关闭吗? 请问有啥方法能不关闭Socket!

如何突然关闭 TCP 套接字并重新连接

Perl、ClamAV、扫描流中的病毒

电脑下载东西提示:无法下载病毒扫描失败怎么办?

为啥我的 TCP 服务器套接字在一个客户端断开连接后关闭?