`
java_my_life
  • 浏览: 261040 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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地址的主机名

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

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: 65.55.12.249
host: www.microsoft.com
canonical host name: wwwco2vip.microsoft.com
65 55 12 249 

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

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

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

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的话,会比较准确,比如以下代码

import java.io.IOException;

import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;

 

public class CommonsTelnetTest {
       public static void main(String [] args){
    	// TODO Auto-generated method stub
    	Socket server = null;
    	 try {
    	 server = new Socket();
    	 InetSocketAddress address = new InetSocketAddress("smtp.126.com",25);
    	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();}
       }
}
分享到:
评论

相关推荐

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

    **TCPing:网络连接与端口状态检测利器** 在IT运维和网络监控中,了解网络连通性至关重要。...通过熟练掌握tcpping的使用,可以更高效地管理和维护网络环境,及时发现并解决网络问题,保障服务的稳定运行。

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

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

    java调试domino邮件常见问题

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

    java面试题,命令大全!

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

    Linux命令查看java版本

    - `man tar`:查看`tar`命令的手册页,了解其用法和选项。 6. **磁盘空间管理**: - `df -h`:显示磁盘分区的使用情况,以易于阅读的格式显示。 - `du -h cache/`:显示`cache/`目录及其子目录所占用的空间。 -...

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

    这份学习笔记中提到了很多基础知识点,这些知识点对于Java初学者来说也是相当有用的,因为Java程序运行在各种操作系统上,掌握操作系统的基本使用方法对于程序员来说是一个必备技能。 首先,笔记中提到了Linux的...

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

    第二个方法是使用 Java 中的 Socket 类对端口做 TELNET 操作来检查服务器连通。这个方法可以更准确地检测服务器的可用性。该方法的实现原理是,使用 Socket 连接到指定的主机和端口,如果连接成功,则表示服务器是可...

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

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

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

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

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

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

    SUN发展简史和命令的用法pdf

    ### SUN发展简史和命令的用法 ...以上内容概述了SUN Microsystems的发展历史、硬件和软件体系、PROM状态命令、系统管理命令、网络配置以及系统应用等方面的知识点,有助于理解SUN产品的特性和使用方法。

    Unix教程基础篇

    通过netstat、ping、telnet、ssh等命令,你可以了解网络连接状态,进行远程登录和文件传输。Unix还支持丰富的网络服务,如HTTP、FTP、SMTP等,这些都是基于Unix的服务模型构建的。 在Java和J2EE开发中,Unix作为...

    网络安全的侦测和工具.pdf

    网络安全的侦测与工具是确保网络安全性的重要环节。在这一领域,黑客和安全审计人员首先进行的是网络侦查,以...同时,随着网络技术的发展,新的侦查方法和防御手段也在不断演进,因此持续学习和更新知识是至关重要的。

    minecraft-status:轻松从Minecraft Java或Bedrock服务器获取状态

    具体功能和使用方法需要查看项目文档或源代码来了解。 总结,无论是Java版还是Bedrock版的《我的世界》服务器,获取状态对于管理和维护服务器、提升玩家体验都有着重要的作用。通过各种方法,我们可以轻松获取到...

    commons-net-3.2

    同时,由于库中的类和方法设计良好,可读性强,使得维护和扩展代码变得容易。 总结来说,Apache Commons Net 3.2是一个强大的Java网络库,提供了多种网络协议的实现,对于需要在网络编程中进行文件传输、远程控制、...

    交换机的工作原理及其配置

    测试交换机的方法包括使用ping命令检查连通性,tracert跟踪路由,以及通过交换机的日志和性能监控功能进行故障排查。此外,使用网络诊断工具如Wireshark进行数据包捕获,可以帮助理解网络流量行为和识别潜在问题。 ...

    3 交换机的工作原理及其配置.ppt

    在测试交换机配置时,可以使用ping、tracert等工具验证端口连通性,检查配置是否生效。同时,定期保存配置到非易失性存储,确保在电源故障或重启后配置不丢失。清除配置通常用于故障排查或重新规划网络。 总结,...

    Java程序员面试宝典视频课程之网络编程(十二)

    7. **网络故障排查**:了解如何使用网络工具,如`ping`、`traceroute`和`telnet`,来诊断和解决网络连接问题。 通过本视频课程的学习,学员不仅能够熟悉上述理论知识,还能通过实践案例深化理解,增强解决实际问题...

    Linux.docx

    本文将详细讲解Linux中的常见命令、命令分类以及如何利用这些命令来查看系统资源,如内存和CPU状态,同时也会涉及到Java线上问题的排查方法。 1. **Linux命令分类及用途**: - **文件和目录操作**:如`ls`用于列出...

    How to use SDM to conect cisco device using gns3

    4. **配置SSH和Telnet**:通过命令`line vty 0 4`进入虚拟终端线路配置模式,接着使用`privilege level 15`、`login local`和`transport input telnet ssh`设置远程登录权限和传输协议。 5. **可选配置**:如果需要...

Global site tag (gtag.js) - Google Analytics