代码之家  ›  专栏  ›  技术社区  ›  Sunil Kumar Sahoo

如何用java程序检测internet的连通性

  •  3
  • Sunil Kumar Sahoo  · 技术社区  · 15 年前

    如何写一个java程序,它会告诉我是否可以上网。我不想ping或创建与某个外部url的连接,因为如果该服务器将关闭,那么我的程序将无法工作。我想可靠的方法来检测,这将告诉我100%的保证,无论我有互联网连接或不考虑我的操作系统。我想要的程序谁是直接连接到互联网的电脑。

    我试过下面的程序

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

    谢谢 苏尼尔·库马尔·萨胡

    6 回复  |  直到 13 年前
        1
  •  4
  •   Dean Harding    15 年前

    网络 互联网 .

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

        2
  •  1
  •   Stephen C    15 年前

    有效 连接到互联网(即你可以在哪里真正做事情)取决于很多事情是否正确,在你的机器,你的局域网,你的路由器,你的调制解调器,你的ISP等等。在很多地方,故障或错误配置会部分或完全阻止网络访问。

    不可能确定地测试所有这些潜在的故障点。。。甚至列举它们(例如,您通常无法知道ISP的网络基础设施中发生了什么。)

        3
  •  1
  •   paxdiablo    15 年前

    我认为,如果您要打开一个HTTP会话,其中包括:

    • www.ibm.com
    • www.ford.com

    而且至少 他们中的一个回复是有效的,你可以上网。一旦得到有效响应,就不要继续测试,因为那将是一种浪费。

    如果你担心这四家公司可能同时倒闭,那就可以在这个名单上多加一些大公司

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

        4
  •  1
  •   Chris Nava    15 年前

    在你提到的代码周围放一个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;
    }
    

    为了获得更好的结果,研究可以抛出什么样的异常并分别处理每种异常。

        5
  •  0
  •   Red_Marlboro    8 年前

    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");
       }
    }
    

    如果连接到Internet,您将获得以下输出:

    www.facebook.com/31.13.78.35

        6
  •  0
  •   Devin    8 年前
    Enumaration<NetworkInterface> networkInterface = null; 
    
    networkInterface = NetworkInterface.getNetworkInterfaces();
    
    for(NetworkInterface interface : Collections.list(networkInterface)){
    
        System.out.println("Internet Available status is :"+ interface.isUp());
    
    }