有没有java写的ping功能的源码参考?(200分)

  • 主题发起人 主题发起人 zhiyue
  • 开始时间 开始时间
Z

zhiyue

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在java中实现测试某主机是否开机,即IP是否可达的功能,类似ping的功能,
有源码实例可发至huohong@sjtu.edu.cn,[:)]200大洋!
 
我只见过这样做的,但是不算 Ping:
用 Socket 连接服务器的 7 号端口(echo)。
如果你说 "Hello", 服务器返回 "Hello" 的话,说明 "ping" 成功了。[:D]
 
Sterntaler说的方法需要在服务器端自己编程吗?如果需要,则该方法不可取。
我想知道任何一台主机是否在网上,不想在它那儿安装我的程序。
 
好像对方需要开启Echo服务? 不行,这样的方法还是不可行。
 
可以,通过执行一个本地
/**
通过LANG包中的Process类实现执行一个本地命令!
*/
import java.io.*;
import java.util.*;
public class ShellCommand
{
private Process process;
public String getProcessContent()
{
String Res=null;
if (process!=null)
{
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(process.getInputStream()));
String temp=in.readLine();
while (temp!=null)
{
Res=Res+"/n"+temp;
temp=in.readLine();
}
}
catch (IOException exp)
{
System.out.println(exp.toString());
}

}
return Res;
}
public void execCommand(String strShell){
try{
if(process!=null){
killProcess();
}
Runtime sys= Runtime.getRuntime();
process=sys.exec(strShell);
}catch(Exception e){
System.out.println(e.toString());
}
}
/**
杀死该进程
*/
public void killProcess(){
if(process!=null){
process.destroy();
process=null;
}
}
public static void main(String[] args)
{
ShellCommand sc=new ShellCommand();
sc.execCommand("ping 127.0.0.1");
System.out.println(sc.getProcessContent());
System.exit(0);
}
}
 
好象那本<java网络编程>上有代码的
 
only you 的方法我也试过,可以实现,但发现ping100个机器要2分钟(虽然开了线程),另外,线程是不能destroy的。还有调用系统的ping是否存在跨平台的问题?我现在是在windows下,不知unix下是否这种方式有问题?
再问问,马上发分。
 
我想应该没有跨平台问题,PING在UNIX下也有
 
Runtime 的exec方法本身是跨平台的!但是其中执行的命令和命令行参数确不是跨平台的!
 
多人接受答案了。
 
后退
顶部