- 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连接。 不过多数站点主机都禁用这个请求。
来源: http://www.phpxs.com/code/1002531/