`

JAVA里的PING和TELNET

    博客分类:
  • java
阅读更多
JAVA里的PING是在JDK 1.5后用了新的函数isreachable去实现,具体介绍如下:

InetAddress对象的常用方法

InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:

byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组

String getCanonicalHostName() 获取此IP地址的完全限定域名

String getHostAddress() 获取IP地址的字符串,返回为一个String

String getHostName() 获取此IP地址的主机名

下面一个简单的例子展示这些方法的使用:

package org.dakiler.javanet.chapter1;

import java.net.InetAddress;

public class Example3

{
    public static void main(String args[])throws Exception
     {
         InetAddress address=InetAddress.getByName("www.microsoft.com");

         System.out.println("ip: "+address.getHostAddress());

         System.out.println("host: "+address.getHostName());

         System.out.println("canonical host name: "+address.getCanonicalHostName());

        byte[] bytes=address.getAddress();

        for(byte b:bytes)
         {
            if(b>=0)System.out.print(b);
            else System.out.print(256+b);
             System.out.print(" ");
         }
     }
}

这个例子首先是获取www.microsoft.com的对应的InetAddress实例,然后分别打印address.getHostAddress() address.getHostName()以及address.getCanonicalHostName()。在这个例子中,需要注意的是IP地址中,每一个都是0-255之间的,是无符号的。但是java中的byte表示的区域是-128~127,所以中间需要做一个转换。

结果如下:

ip: 207.46.19.254

host: www.microsoft.com

canonical host name: wwwbaytest2.microsoft.com

207 46 19 254

1.2. InetAddress对象的其他实用方法

isReachable(int timeout) 测试是否能达到特定IP地址

isReachable(NetworkInterface netif,int ttl,int timeout)测试是否能达到特定IP地址,并且制定特定的NetworkInterface,ttl表示路由过程中的最大跳数,timeout是超时时间。一个简单的例子如下:

package org.dakiler.javanet.chapter1;

import java.net.InetAddress;

public class Example4

{

    public static void main(String args[])throws Exception

     {

         InetAddress address1=InetAddress.getLocalHost();       

         InetAddress address2=InetAddress.getByName("www.baidu.com");

         System.out.println(address1.isReachable(5000));

         System.out.println(address2.isReachable(5000));

     }

}

分别测试本机是否可达以及www.baidu.com是否可达。运行的结果是:

true

false


感觉奇怪么,前者是正常的,但是按理说www.baidu.com应该也是可达的,实际确实false,这个原因是因为isReachable的实现,通常是ICMP ECHO Request 或是尝试使用目标主机上的端口7进行连接,很有可能被防火墙拦截,所以会访问不到。

  如果要TELNET的话,会比较准确,比如以下代码
 // TODO Auto-generated method stub
   Socket server = null;
         try {
             server = new Socket();
             InetSocketAddress address = new InetSocketAddress("bbs.sysu.edu.cn",23);
             server.connect(address, 5000);
              System.out.println("ok!");

 }
         catch (UnknownHostException e) {
           System.out.println("wrong!");
             e.printStackTrace();
         } catch (IOException e) {
          System.out.println("wrong");
             e.printStackTrace();
         } 
分享到:
评论

相关推荐

    docker内部无法使用ping等网络工具解决方案

    离线安装包,ping,telnet等

    tcpping 一个很好用的网络判断工具

    传统的ping命令利用的是Internet控制消息协议(ICMP)中的回显请求和回显应答报文,而tcpping则利用TCP的三次握手过程来测试网络连通性。它发送一个SYN数据包到目标主机,如果目标主机响应并返回SYN+ACK,tcpping再...

    java零基础学习指南(附带各种开发手册,java,linux,mysql等)

    - **网络通信**:nc、telnet、ping等命令用于网络诊断和测试。 - **进程管理**:ps、kill、nohup等用于查看和控制进程。 4. **数据库知识**: - **MySQL**:关系型数据库的基本操作,如创建表、插入数据、查询...

    java ftp tcp udp smtpmail 校验 连通 测试

    在进行这些连接测试时,通常会编写一些工具类或脚本,例如使用`ping`命令检查网络可达性,`telnet`测试端口开放,或者使用Java代码模拟TCP、FTP、SMTP连接。`源码`标签提示我们可以参考提供的源码进行学习和实践。 ...

    java调试domino邮件常见问题

    - 使用`telnet`命令测试端口是否开放,特别是DIIOP默认使用的端口63148。 - 检查防火墙设置,确保相应的端口没有被阻止。 如果出现任何网络连接问题,需要先解决这些问题才能继续下一步。 ##### 3. 配置DIIOP设置 ...

    java写的网络监控系统网络数据采集模块.zip

    java写的网络监控系统网络数据采集模块,基于java NIO,并没有使用MINA、netty等框架,主要通过采集端间歇性执行ping,telnet,tracert命令对执行的目标机器进行网络监控,并将监控结果汇总到服务器数据库。...

    Linux命令查看java版本

    - `telnet 192.168.2.3 80`:尝试通过TCP协议连接到指定IP地址的80端口。 - `ping botu.bokee.com`:测试与目标主机的连通性。 - `nslookup botu.bokee.com 211.152.19.73`:解析域名并获取其IP地址。 11. **...

    java面试题,命令大全!

    5. **网络操作**:ping、telnet、curl、netstat、ifconfig。 6. **软件安装和更新**:apt-get、yum、wget、tar、unzip、gzip、bzip2。 7. **系统信息查看**:uname、date、free、df、whoami、history。 8. **脚本...

    java初学者的第一天,畅游于Linux

    在学习Java的过程中,掌握这些Linux基础知识可以帮助程序员更好地在Linux环境下开发和运行Java程序。Linux是一个强大的开发和运行平台,拥有广泛的应用。因此,对于希望成为专业Java开发者的初学者来说,了解Linux...

    java检查服务器的连通两种方法代码分享

    在 Java 中,检查服务器连通是一个非常重要的问题,因为它可以帮助我们检测服务器的状态,确保服务器的可用性和稳定性。今天,我们将分享两种使用 Java 检查服务器连通的方法代码。 方法一:使用 InetAddress 的 is...

    详解java 客户端链接不上redis解决方案

    此外,还可以通过`ping`命令测试网络连通性,例如`ping 192.168.0.104`。 3. **端口开放**:默认情况下,Redis监听6379端口。使用`telnet`命令测试端口是否开放,如`telnet 192.168.0.104 6379`。如果无法连接,...

    WebLogic Server配置和性能调优

    可以通过网络工具如ping、telnet来检查网络连通性,通过WebLogic管理控制台检查服务器和应用的状态,以及Tuxedo服务是否正常。 2.3 JDBC配置 JDBC(Java Database Connectivity)是Java访问数据库的标准接口。在...

    java习题及答案第11章习题参考答案.pdf

    在Java编程中,网络通信是一个重要的组成部分,主要涉及到Socket编程和URL访问等技术。本章节的习题重点在于理解和应用这些基础知识。 1. **网络端口**: - 计算机操作系统通常保留1-1024的端口号供系统服务使用,...

    oracl常见问题.

    telnet host_name(要先启动控制面板>管理工具>telnet服务) 如果此命令成功执行,则会提示输入用户名,密码. 如果可以使用ping 命令,可以更换使用该命令: 下面的命令将检查远程主机是否可用并会返回一个状态消息:ping ...

    pj-net-tools:纯 Java 网络工具-开源

    包括:01) ICMP-ping, 02) ICMP-traceroute, 03) DNS-check resolver, 04) TCP-scanner, 05) IP-calculator, 06) Syslog-server, 07) Telnet-client, 08) Local ARP-缓存请求。 09) Network Ping-Scanner, 10) Snmp...

    WLAN网络监控系统使用维护手册宣贯.pdf

    Apache Tomcat 是一种开源的Web服务器和Servlet容器,用于运行Java Servlet和JavaServer Pages (JSP)。在WLAN网络监控系统中,Tomcat可能用于作为网络管理软件的后端服务,提供Web界面供管理员监控网络状态。监控...

    Desktop Java Pinger:免费的便携式跨平台图形化多Pinger,100%纯Java-开源

    TCP端口扫描程序和Telnet连接到主机支持。 还支持在zip归档文件之间备份/还原DB + CFG文件。 简单直观的GUI-图形用户界面。 已在Windows和Linux中成功测试了100多个主机。 在Java SE应用程序中使用CDI(焊接)和JPA...

    JAVA 面试题集(有答案)pdf格式

    根据给定文件的信息,我们可以...以上是针对给定文件中的知识点进行的详细总结和解释,涵盖了数据结构、算法、Java基础知识、数据库操作、Web技术等多个方面,希望这些内容能够帮助读者更好地理解和掌握相关的IT知识。

    20151910042-刘鹏-CN实验01-计算机网络平台预备实验1

    4. **Java网络编程**:查找与Java网络编程相关的类库包,如`java.net`和`java.nio`,理解这些包提供的功能,如套接字编程、非阻塞I/O等,为后续的网络程序开发做准备。 5. **虚拟机配置**:安装配置虚拟机平台,如...

    网络安全基础知识之侦察与工具

    在专业层面,审计人员和黑客有时会编写自定义工具,如使用 Perl、C、C++ 或 Java,以应对特定的侦察需求。市面上也有许多商业网络扫描工具,它们功能强大,但可能需要精细配置。这些工具能够监听和分析网络流量,...

Global site tag (gtag.js) - Google Analytics