欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java实现Ping例子,javaping例子,这个示例不是真正实现pi

来源: javaer 分享于  点击 45058 次 点评:184

java实现Ping例子,javaping例子,这个示例不是真正实现pi


这个示例不是真正实现ping用来检测是否alive,因为Socket类没有足够操作的权限,但是我们可以模仿ping,通过"echo port"实现,在server端,"echo port"端口一般是7,我们往这个端口写入一个字符串,然后这个server会返回这个字符串。

package cn.outofmemoryimport 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连接。 不过多数站点主机都禁用这个请求。

相关栏目:

用户点评