Avast Antivirus / MailShield更新后,Java套接字连接被拒绝

时间:2019-04-01 07:03:27

标签: java sockets tcp antivirus

自从上次更新Avast Antivirus之后,我不再可以使用java.net.Socket连接到POP3电子邮件服务器。 Mozilla Thunderbird可以正常工作,我也可以使用PuTTY(原始端口110)进行连接。

连接到110以外的其他端口都可以正常工作。当运行以下代码时:

try
{
    System.out.println("Connecting to www.google.com:80");
    java.net.Socket socket1 = new Socket("www.google.com", 80);
    System.out.println("Connected");
    socket1.close();

    System.out.println("Connecting to pop01.binero.se:110");
    java.net.Socket socket2 = new Socket("pop01.binero.se", 110);
    System.out.println("Connected");
    socket2.close();
}
catch(Exception ex)
{
    ex.printStackTrace();
}

它输出:

Connecting to www.google.com:80
Connected
Connecting to pop01.binero.se:110
java.net.ConnectException: Connection refused: connect
        at java.base/java.net.PlainSocketImpl.connect0(Native Method)
        at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at java.base/java.net.Socket.connect(Socket.java:540)
        at java.base/java.net.Socket.<init>(Socket.java:436)
        at java.base/java.net.Socket.<init>(Socket.java:213)
        at SocketTest.main(SocketTest.java:15)

如果我禁用传入邮件的Avast MailShield,则可以使用上面的代码进行连接。据我所知,MailShield拦截了来自电子邮件客户端的TCP连接并扫描了所有电子邮件附件。如果发现病毒,则会在电子邮件主题中添加警报文本。

我不了解的是它如何拦截TCP连接,如何区分我的程序,Thunderbird或PuTTY,以及为什么它仅阻止我的程序。

我想让Thunderbird的MailShield保持激活状态,或者为我自己的程序禁用它,或者让Avast将我的程序识别为有效的电子邮件客户端并让它通过。

1 个答案:

答案 0 :(得分:0)

通常,窗口更新将更新JDK路径。 您需要重新配置JDK路径 How to set java_home on Windows 7?