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是否可达。运行的结果是:
感觉奇怪么,前者是正常的,但是按理说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();}
}
}
分享到:
相关推荐
**TCPing:网络连接与端口状态检测利器** 在IT运维和网络监控中,了解网络连通性至关重要。...通过熟练掌握tcpping的使用,可以更高效地管理和维护网络环境,及时发现并解决网络问题,保障服务的稳定运行。
- **网络通信**:nc、telnet、ping等命令用于网络诊断和测试。 - **进程管理**:ps、kill、nohup等用于查看和控制进程。 4. **数据库知识**: - **MySQL**:关系型数据库的基本操作,如创建表、插入数据、查询...
- 使用`telnet`命令测试端口是否开放,特别是DIIOP默认使用的端口63148。 - 检查防火墙设置,确保相应的端口没有被阻止。 如果出现任何网络连接问题,需要先解决这些问题才能继续下一步。 ##### 3. 配置DIIOP设置 ...
5. **网络操作**:ping、telnet、curl、netstat、ifconfig。 6. **软件安装和更新**:apt-get、yum、wget、tar、unzip、gzip、bzip2。 7. **系统信息查看**:uname、date、free、df、whoami、history。 8. **脚本...
- `man tar`:查看`tar`命令的手册页,了解其用法和选项。 6. **磁盘空间管理**: - `df -h`:显示磁盘分区的使用情况,以易于阅读的格式显示。 - `du -h cache/`:显示`cache/`目录及其子目录所占用的空间。 -...
这份学习笔记中提到了很多基础知识点,这些知识点对于Java初学者来说也是相当有用的,因为Java程序运行在各种操作系统上,掌握操作系统的基本使用方法对于程序员来说是一个必备技能。 首先,笔记中提到了Linux的...
第二个方法是使用 Java 中的 Socket 类对端口做 TELNET 操作来检查服务器连通。这个方法可以更准确地检测服务器的可用性。该方法的实现原理是,使用 Socket 连接到指定的主机和端口,如果连接成功,则表示服务器是可...
在Java编程中,网络通信是一个重要的组成部分,主要涉及到Socket编程和URL访问等技术。本章节的习题重点在于理解和应用这些基础知识。 1. **网络端口**: - 计算机操作系统通常保留1-1024的端口号供系统服务使用,...
Apache Tomcat 是一种开源的Web服务器和Servlet容器,用于运行Java Servlet和JavaServer Pages (JSP)。在WLAN网络监控系统中,Tomcat可能用于作为网络管理软件的后端服务,提供Web界面供管理员监控网络状态。监控...
在专业层面,审计人员和黑客有时会编写自定义工具,如使用 Perl、C、C++ 或 Java,以应对特定的侦察需求。市面上也有许多商业网络扫描工具,它们功能强大,但可能需要精细配置。这些工具能够监听和分析网络流量,...
### SUN发展简史和命令的用法 ...以上内容概述了SUN Microsystems的发展历史、硬件和软件体系、PROM状态命令、系统管理命令、网络配置以及系统应用等方面的知识点,有助于理解SUN产品的特性和使用方法。
通过netstat、ping、telnet、ssh等命令,你可以了解网络连接状态,进行远程登录和文件传输。Unix还支持丰富的网络服务,如HTTP、FTP、SMTP等,这些都是基于Unix的服务模型构建的。 在Java和J2EE开发中,Unix作为...
网络安全的侦测与工具是确保网络安全性的重要环节。在这一领域,黑客和安全审计人员首先进行的是网络侦查,以...同时,随着网络技术的发展,新的侦查方法和防御手段也在不断演进,因此持续学习和更新知识是至关重要的。
具体功能和使用方法需要查看项目文档或源代码来了解。 总结,无论是Java版还是Bedrock版的《我的世界》服务器,获取状态对于管理和维护服务器、提升玩家体验都有着重要的作用。通过各种方法,我们可以轻松获取到...
同时,由于库中的类和方法设计良好,可读性强,使得维护和扩展代码变得容易。 总结来说,Apache Commons Net 3.2是一个强大的Java网络库,提供了多种网络协议的实现,对于需要在网络编程中进行文件传输、远程控制、...
测试交换机的方法包括使用ping命令检查连通性,tracert跟踪路由,以及通过交换机的日志和性能监控功能进行故障排查。此外,使用网络诊断工具如Wireshark进行数据包捕获,可以帮助理解网络流量行为和识别潜在问题。 ...
在测试交换机配置时,可以使用ping、tracert等工具验证端口连通性,检查配置是否生效。同时,定期保存配置到非易失性存储,确保在电源故障或重启后配置不丢失。清除配置通常用于故障排查或重新规划网络。 总结,...
7. **网络故障排查**:了解如何使用网络工具,如`ping`、`traceroute`和`telnet`,来诊断和解决网络连接问题。 通过本视频课程的学习,学员不仅能够熟悉上述理论知识,还能通过实践案例深化理解,增强解决实际问题...
本文将详细讲解Linux中的常见命令、命令分类以及如何利用这些命令来查看系统资源,如内存和CPU状态,同时也会涉及到Java线上问题的排查方法。 1. **Linux命令分类及用途**: - **文件和目录操作**:如`ls`用于列出...
4. **配置SSH和Telnet**:通过命令`line vty 0 4`进入虚拟终端线路配置模式,接着使用`privilege level 15`、`login local`和`transport input telnet ssh`设置远程登录权限和传输协议。 5. **可选配置**:如果需要...