各位请问:
       小弟初学java,参加java创意比赛,题目遇到困难,希望有高人能指点一二, 题目如下:
       如何实现用java判断网络连接状态? 
       小弟想了两个办法,不知行不行的通:
       1.ping自己的机器来判断是否连接到局域网内,ping一个固定的网站,比如百度,来判断是否连接到互联网……
       2.监听windows的判断网络连接状态的那个小功能(就是托盘图标那里显示“网络电缆没有插好”的那个),来实现这个小程序的功能。
       关键是ping怎么和java结合到一起,并且java怎样获得windows中的这个数据流?
       说白了就是跟windows的这个判断网络连接状态的小功能一样,就是用java做出这个小程序取代windows中的这个,也许我表达的不对也许想的不够多,
       分数不够多了,希望大家能帮我这个忙,先谢了
       

解决方案 »

  1.   

    Java中没有办法做出Windows程序中的ping命令!可以获得ping执行后的数据流,但是只能获得字符串,需要自行解析。
      

  2.   

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;public class PingTest {    public static void main(String[] args) throws IOException {
            String url = "www.baidu.com";
            // 方法一
             System.out.println("方法一");
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec("ping " + url);
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String str = "";
            while((str = br.readLine()) != null) {
                str = str.trim();
                if(str.length() > 0) {
                    System.out.println(str);
                }
            }
            br.close();
            
            // 方法二
             System.out.println("方法二");
            URL u = new URL("http://" + url);
            try {
                HttpURLConnection http = (HttpURLConnection)u.openConnection();
                if(http.getResponseCode() != 200) {
                    System.out.println(url + " connection error.");
                }else{
                    System.out.println(url + " connection success.");
                }
            }catch(Exception e) {
                System.out.println(url + " connection error.");
            }
        }
    }