如何使用java程序检测Internet连接

时间:2010-03-11 03:59:56

标签: java network-programming

如何编写一个java程序,告诉我是否有互联网访问权限。我不想ping或创建与某个外部URL的连接,因为如果该服务器将关闭,那么我的程序将无法正常工作。我想要可靠的方法来检测哪些会告诉我100%保证我是否有互联网连接而不管我的操作系统。我想要直接连接到互联网的计算机程序。

我尝试过以下程序

URL url = new URL("http://www.xyz.com/");           
        URLConnection conn = url.openConnection();
        conn.connect();

我想要比这个程序更合适的东西

由于 Sunil Kumar Sahoo

6 个答案:

答案 0 :(得分:4)

这取决于你所说的“互联网”连接。许多计算机没有直接连接到互联网,因此即使您可以检查他们是否有网络连接,也并不总是意味着他们可以访问互联网。 / p>

测试计算机是否可以访问其他服务器的唯一100%可靠方法是实际尝试。

答案 1 :(得分:1)

有效的连接到互联网(即你可以实际做的事情)取决于很多东西是正确的,在你的机器,你的本地网,你的路由器,你的调制解调器,你的ISP等等上。有很多地方失败或错误配置会部分或完全阻止网络访问。

不可能毫无疑问地测试所有这些潜在的失败点......甚至可以枚举它们。 (例如,您通常无法了解ISP的网络基础架构中发生的情况。)

正如@codeka所说:“测试计算机是否可以访问其他服务器的唯一100%可靠方法是实际尝试”

答案 2 :(得分:1)

我认为如果要打开一个包含所有内容的HTTP会话:

  • www.google.com
  • www.microsoft.com
  • www.ibm.com
  • www.ford.com

并且至少一个他们回来时有一个有效的回复,你会有互联网连接。一旦得到有效的答复,就不要继续测试,因为那样做会很浪费。

如果您担心所有四家公司可能同时倒闭,请随意扩大该名单上的一些超级公司: - )

当然,如果有人控制了你的DNS服务器,那么即使这种方法也可能被欺骗,但它可能和你要获得的一样可靠。

答案 3 :(得分:1)

只需在您提到的代码周围放置一个try / catch块。如果抛出/捕获异常,则表示您没有连接。

boolean connectivity;
try {
    URL url = new URL("http://www.xyz.com/");
    URLConnection conn = url.openConnection();
    conn.connect();
    connectivity = true;
} catch (Exception e) {
    connectivity = false;
}

为了获得更好的结果,请调查可以抛出哪种异常并单独处理每种异常。

答案 4 :(得分:0)

Enumaration<NetworkInterface> networkInterface = null; 

networkInterface = NetworkInterface.getNetworkInterfaces();

for(NetworkInterface interface : Collections.list(networkInterface)){

    System.out.println("Internet Available status is :"+ interface.isUp());

}

答案 5 :(得分:0)

您可以通过InetAddress课程询问互联网协议来检查连接。如果您收到异常,或者例如使用getLocalHost() - 这将返回本地主机的地址 - 为您提供以下输出: localhost/127.0.0.1代替完全限定名称,例如jaf-stephen-lenovoG40-80/152.6.44.13,但您未连接到互联网。

public static void main(String[] args) {
   try {
      InetAddress address = InetAddress.getByName("www.facebook.com");
      System.out.println(address);
   } catch (UnknownHostException e) {
      System.err.println("Couldn't find www.facebook.com");
   }
}

如果您已连接到互联网,您将获得以下输出:

www.facebook.com/31.13.78.35