CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

请高手指点,难道java就不能实现Ping的功能吗?

楼主zhangtao11()2002-01-23 00:31:55 在 Java / J2SE / 基础类 提问

这几天我一直在想办法解决用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

相关问题

  • 初学java,请指点!
  • ping,tracert,nslookup详解,请高人指点!
  • 《core java》里两个算法没看懂,哪位指点指点
  • 一段小小的Java程序,请指点指点!!!多谢!
  • 有谁对“java web start”了解?还望指点指点!!
  • 我想学Java,高手指点
  • 巨难问题,请java高手指点!~~
  • 初学java,请多多指点,谢谢!
  • JAVA I/O 问题,请指点!
  • 刚转到Java请各位指点.

关键词

  • .net
  • 连接
  • socket
  • ip
  • playgirl
  • ping
  • inetaddress
  • playboy
  • 实现
  • 功能

得分解答快速导航

  • 帖主:zhangtao11
  • tiangou

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo