java执行ping命令

来源:互联网 发布:从零开始学编程 编辑:程序博客网 时间:2024/05/21 09:22
指定要测试的网址,用.properties的文件保存
        add1=www.baidu.com
        add2=www.sina.com
        add3=www.163.com
web.xml如下配置
        <!-- 监听指定的类 -->
       <listener>
            <listener-class>com.gangyi.listener.MyListener</listener-class>
      </listener>
MyListener类如下
    package com.gangyi.listener;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.gangyi.ping.Ping;
/***
 * 服务器启动时进行监听
 * @author ChenChao
 * @createTime 2011-8-4
 */
public class MyListener implements ServletContextListener {
    private Timer timer=null;
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        //注销timer
        timer.cancel();
    }
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        timer=new Timer(true);
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                //每隔3分钟指行指定方法
                Ping.start();
            }
        },0,180000);
    }
}

Ping类如下:
package com.gangyi.ping;
/**
 * 用来测试指定网站的连接是否畅通,并将测试的信息写入文本中
 * @author ChenChao
 * @createTime 2011-8-4
 */
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

public class Ping {
    //定义要测试的地址
    private static String add1;
    private static String add2;
    private static String add3;
    public static void start() {
        try {
            //解析配置文件得到地址
            Properties properties=new Properties();
            properties.load(Ping.class.getResourceAsStream("/address.properties"));
            add1=properties.get("add1").toString();
            add2=properties.get("add2").toString();
            add3=properties.get("add3").toString();
            String[]address={add1,add2,add3};
            //用来存放日志信息
            String[]log={"e:\\"+add1+".txt","e:\\"+add2+".txt","e:\\"+add3+".txt"};
            if(!new File("e:\\"+add1+".txt").exists()){
                File file=new File(log[0]);
                file.createNewFile();
                File file2=new File(log[1]);
                file2.createNewFile();
                File file3=new File(log[2]);
                file3.createNewFile();
            }
            for (int j = 0; j < address.length; j++) {
                //执行ping指令
                Process process = Runtime.getRuntime().exec("Ping " +address[j]);
                // 对结果进行解析
                InputStreamReader r = new InputStreamReader(process.getInputStream(), "GB2312");
                LineNumberReader returnData = new LineNumberReader(r);
                String line = "";
                FileOutputStream fos=new FileOutputStream(new File(log[j]),true);
                fos.write("=========================================".getBytes());
                fos.write("\n".getBytes());
                fos.write(new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date()).getBytes());
                while ((line = returnData.readLine()) != null) {
                    fos.write(line.getBytes());
                    fos.write("\n".getBytes());
                }
                fos.write("=========================================".getBytes());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //本地测试方法
    public static void main(String[] args) {
        Ping.start();
    }
}