java测试ping通


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Pattern;

import org.apache.commons.io.IOUtils;

/**
 * 
 * <ul>
 * Windows 的,不支持其他系统
 * <li>经过测试,可连通情况下,返回时间60MS
 * <li>不可连通情况下,返回时间为:500MS
 * </ul>
 */
public class Ping {
	/** ping命令,如果不是windows系统,修改*/
	public static String pingCmd = "ping -n 1 -l 10 -w 500  ";
	/** ping结果字符编码,默认GBK*/
	public static String pingRsEncoding = "GBK";
	/** ping结果匹配行数,默认3*/
	public static int checkLine = 3;
	/** ping结果,匹配的正则表达式 (字节|bytes)=10*/
	public static Pattern pattern = Pattern.compile("(字节|bytes)=10");
	
	//public static int times = ScConfig.getInt("ping.times", 5);
	
	public static int times = 10;

	/**
	 * ping the server
	 * 
	 * @param server
	 *            String
	 * @param timeout
	 *            int
	 * @return boolean
	 * @throws IOException
	 */
	public static boolean pingServer(String server) {
		BufferedReader in = null;
		//取得当前JVM的运行时环境
		Runtime r = Runtime.getRuntime();
		boolean pingResult = false;
		String pingCommand = pingCmd + server;
		int i = 0;
		while(i < times){
			i++;
			pingResult = pingDo(in, r, pingResult, pingCommand);
			if(pingResult){
				break;
			}
		}
		
		return pingResult;
	}



	/**
	 * @param in
	 * @param r
	 * @param pingResult
	 * @param pingCommand
	 * @return
	 */
	private static boolean pingDo(BufferedReader in, Runtime r,
			boolean pingResult, String pingCommand) {
		Process p = null;
		try {
			p = r.exec(pingCommand);
			if (p == null) {
				return false;
			}
			in = new BufferedReader(new InputStreamReader(p.getInputStream(),pingRsEncoding));
			String line = null;
			while ((line = in.readLine()) != null) {
				pingResult = pattern.matcher(line).find();
				if(pingResult){
					break;
				}
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				p.waitFor();
				IOUtils.closeQuietly(in);
				p.destroy();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			p = null;
		}
		return pingResult;
	}
	
	
	
	public static void main(String[] args){
		String str = "192.1.1.11";
		System.out.println(pingServer(str));
	}

}

打印结果:

true

猜你喜欢

转载自blog.csdn.net/u012138706/article/details/45023603