|
前2天研究一个测试PC之间的连通性问题,写了一个JAVA程序,通过GUI界面ping另一台机器,若通,就在TextArea中显示OK,否则就显示Unreachable,给你做个参考吧,帮你加上了注释。
- import java.io.*;
- public class Ping {
- /**
- * @param args
- */
- public static void main(String[] args) {
- //实际中需要使用窗口实现结果输出
- boolean passed = false;
- passed = pingServer("192.168.1.1", 2000);
- if (passed) {
- System.out.print("OK");
- } else {
- System.out.print("Unreachable");
- }
- }
- /**
- * @param
- */
- public static boolean pingServer(String server, int timeout) {
- //准备执行的命令字符串
- String pingCommand = "ping " + server + " -n 1 -w " + timeout;
- try {
- //使用一个独立的进程在运行时环境中执行ping命令
- Process p = Runtime.getRuntime().exec(pingCommand);
-
- //正常情况下,应返回一个Process的实例
- //若为空,则表示未获得实例,返回false
- if (p == null) {
- return false;
- }
-
- //BufferedReader实例化
- //从进程p中得到网络中传回的字节流,并将其解码为字符,并将其置入缓冲区
- BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
- String line = null;
-
- //读取缓冲区中的每一行,若该行不为null就继续循环
- while ((line = in.readLine()) != null) {
-
- //多个行中,只要有一行符合该条件,就返回True
- if (line.startsWith("Reply from")) {
- return true;
- }
- }
- //关闭该流
- in.close();
-
- //若出现异常,就返回false
- } catch (Exception e) {
- return false;
- }
- //若不符合上面的条件,就返回false
- return false;
- }
- }
复制代码 |
|