当前位置:编程学习 > JAVA >>

Java判断网络连接是否正常

实验室有一台服务器,用来负责接收数据,但是经常出现数据接收不全的问题,或者出现延迟接收的问题。我们怀疑是服务器的网络不稳定,间歇性断开,所以用Java写了一段测试网络连接的代码,其原理就是调用windows的ping命令,代码如下:


[java]
/**
 * @author HuHui
 * @功能:持续检测网络是否连通
 */ 
package com.hh.net; 
 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
 
public class NetworkState implements Runnable { 
 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub  
        NetworkState ns = new NetworkState(); 
        new Thread(ns).start();//启动线程  
    } 
 
    // 判断网络状态  
    public void isConnect() { 
        Runtime runtime = Runtime.getRuntime(); 
        try { 
            Process process = runtime.exec("ping " + "www.google.ca"); 
            InputStream is = process.getInputStream(); 
            InputStreamReader isr = new InputStreamReader(is); 
            BufferedReader br = new BufferedReader(isr); 
            String line = null; 
            StringBuffer sb = new StringBuffer(); 
            while ((line = br.readLine()) != null) { 
                sb.append(line); 
                // System.out.println("返回值为:"+line);  
            } 
            is.close(); 
            isr.close(); 
            br.close(); 
 
            if (null != sb && !sb.toString().equals("")) { 
                String logString = ""; 
                if (sb.toString().indexOf("TTL") > 0) { 
                    // 网络畅通  
                    logString = "网络正常,时间 " + this.getCurrentTime(); 
//                  System.out.println(logString);  
                } else { 
                    // 网络不畅通  
                    logString = "网络断开,时间 " + this.getCurrentTime(); 
//                  System.out.println(logString);  
                } 
                this.writeIntoLog(logString); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
 
    // 获得当前时间  
    public String getCurrentTime() { 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); 
        String time = sdf.format(new Date()); 
        return time; 
    } 
 
    // 将信息写入日志文件  
    public void writeIntoLog(String logString) { 
        File file = null; 
        FileWriter fw = null; 
        BufferedWriter bw = null; 
        try { 
            file = new File("C:\\netWorkState.log"); 
            if (!file.exists()) { 
                file.createNewFile();// 如果不存在该文件,则创建  
                String sets="attrib +H \""+file.getAbsolutePath()+"\""; 
                Runtime.getRuntime().exec(sets);//将日志文件隐藏  
            } 
            fw = new FileWriter(file, true); 
            bw = new BufferedWriter(fw); 
            fw.append(logString + "\r\n");// 换行  
        } catch (Exception e) { 
            // TODO: handle exception  
            e.printStackTrace(); 
        } finally { 
            try { 
                bw.close(); 
                fw.close(); 
            } catch (IOException e) { 
&

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,