请高手指点,难道java就不能实现Ping的功能吗?
这几天我一直在想办法解决用Java实现Ping的功能,但让我很失望,Java不支持Icmp协议,用Socket方法也只能测出具有Http、Ftp等服务的机器,如果java真不能实现Ping的功能,还有其它的方法吗?(比如:用DELPHI编写.dll文件在用Java调用) 问题点数:26、回复次数:12Top
1 楼Saint_Rol(天夕)回复于 2002-01-23 03:45:45 得分 0
我才看到用JAVA实现这个功能的
http://www.chinajavaworld.com/进最上边的“JAVA例程/用JAVA程序取得IP地址”就可以看到了 快去吧Top
2 楼zhangtao11()回复于 2002-01-23 09:18:16 得分 0
我看了,但跟我的主体无关。谢谢!Top
3 楼grantdyg(撤剑)回复于 2002-01-23 10:13:10 得分 0
应该是可以实现的,可惜我现在放假回家了,否则就可以贴篇文章给你看看,pity.....。Top
4 楼xmvigour(微电-THINKING IN APP)回复于 2002-01-23 10:39:24 得分 0
import java.io.*;
import java.net.InetAddress;
.........
String s;
try {
while((s = in.readLine()).length() != 0)
try{
InetAddress ip=InetAddress.getByName(s);
System.out.println(s+"=="+ip.toString()+" host name="+ip.getHostName()+" path name="+ip.getHostName());
}catch(Exception e){System.out.println(s+" is 连接不上");}
} catch(IOException e) {
e.printStackTrace();
}Top
5 楼xmvigour(微电-THINKING IN APP)回复于 2002-01-23 10:42:57 得分 0
以下是我的测试结果,当某个ip不存在或者ping不通时显示连接不上:
11.14.192.49==playgirl/11.14.192.49 host name=playgirl path name=playgirl
11.14.192.141==11.14.192.141/11.14.192.141 host name=11.14.192.141 path name=11.14.192.141
11.14.192.143 is 连接不上
11.14.192.145==playboy/11.14.192.145 host name=playboy path name=playboy
Top
6 楼ggyy(带着一堆光棍找朋友!)回复于 2002-01-23 10:44:20 得分 0
aaTop
7 楼zhangtao11()回复于 2002-01-23 14:50:08 得分 0
我测试和你一样。
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();}
}
}
但只能测出具有Http、Ftp等服务的机器,
Top
8 楼xmvigour(微电-THINKING IN APP)回复于 2002-01-23 14:56:06 得分 0
你按照我的试试看是否只能测出具有Http、Ftp等服务的机器!因为我们这边很多都是me或2000的所以我也策不了没有具有Http、Ftp等服务的机器Top
9 楼kknd97(绝地风暴)回复于 2002-01-23 15:04:00 得分 0
你可以用这个试试:
try {
Process process = Runtime.getRuntime().exec("ping 172.17.60.45");
String output;
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()));
while ( (output=bufferedReader.readLine()) != null)
out.println(output);
}
catch (Exception e){
out.println("<b>Wrong selection : </b>" + e.toString());
}
Top
10 楼tiangou(simple)回复于 2002-01-23 15:43:38 得分 26
下面程序和ping功能差不多,甚至比ping还要好,
你先编译 然后 java InetAddressTest +ip地址或机器名
/**
* @version 1.00 1999-08-28
* @author Cay Horstmann
*/
import java.net.*;
public class InetAddressTest
{ public static void main(String[] args)
{ try
{
if (args.length > 0)
{ String host = args[0];
InetAddress[] addresses
= InetAddress.getAllByName(host);
for (int i = 0; i < addresses.length; i++)
System.out.println(addresses[i]);
}
else
{ InetAddress localHostAddress
= InetAddress.getLocalHost();
System.out.println(localHostAddress);
}
}
catch (Exception e)
{ System.out.println("Error: " + e);
}
}
}
试试Top
11 楼zhangtao11()回复于 2002-01-23 17:53:11 得分 0
TO:tiangou(分数不多就去灌水乐园)
请问路由器可用您的程序测试吗?Top
12 楼tiangou(simple)回复于 2002-01-24 16:21:46 得分 0
这个我没试过Top




