java实现Ping示例代码

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
这个示例不是真正实现ping用来检测是否alive,因为Socket类没有足够操作的权限,但是我们可以模仿ping,通过"echo port"实现,在server端,"echo port"端口一般是7,我们往这个端口写入一个字符串,然后这个server会返回这个字符串。
import java.io.*;
import java.net.*;

public class PseudoPing {
  public static void main(String args[]) {
    try {
      Socket t = new Socket(args[0], 7);
      DataInputStream dis = new DataInputStream(t.getInputStream());
      PrintStream ps = new PrintStream(t.getOutputStream());
      ps.println("Hello");
      String str = dis.readLine();
      if (str.equals("Hello"))
        System.out.println("Alive!") ;
      else
        System.out.println("Dead or echo port not responding");              
      t.close();
    }
    catch (IOException e) {
      e.printStackTrace();}
    }
  }
}

ps.从JDK1.5之后,java.net.InetAddress.isReachable(int)可以用来检测一个服务器是否alive状态。

import java.io.*;
import java.net.*;

public class ReachableTest {
 public static void main(String args[]) {
     try {
       InetAddress address = InetAddress.getByName("web.mit.edu");
       System.out.println("Name: " + address.getHostName());
       System.out.println("Addr: " + address.getHostAddress());
       System.out.println("Reach: " + address.isReachable(3000));
     }
     catch (UnknownHostException e) {
       System.err.println("Unable to lookup web.mit.edu");
     }
     catch (IOException e) {
       System.err.println("Unable to reach web.mit.edu");
     }
   }
}

如果有权限的话isReachable()方法会使用ICMP ECHO REQUESTs;没权限的话会尝试在向目标主机的端口号7上建立tcp连接。 不过多数站点主机都禁用这个请求。

标签: 服务器 权限

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:java使用SAX解析xml

下一篇:通过JMail发送邮件例子