我正在编写Java程序,经常遇到用户下载我的应用程序时防病毒软件阻止Internet连接的问题。
因此,我找到了一种有趣的方法来检查互联网访问是否被防病毒软件阻止:我使用套接字,并尝试通过53端口连接到Google DNS。 例如。 avast不会阻止此连接,我可以理解-用户是否拥有真正的Internet连接。
public static boolean checkRealInternetConnection() {
return checkInternet("8.8.8.8", 53);
}
private static boolean checkInternet(String host, int port) {
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(host, port), 5000);
return true;
} catch (Exception e) {
return false;
}
}
所以,我的问题是:这是一个好的解决方案吗?
P.S。如果用户具有真正的Internet连接并且没有通过端口80连接到我的网站-我会显示一条消息,指出防病毒软件可以阻止连接。