java调用ping的方法及InetAddress类的使用介绍

本文介绍了Java的网络编程包`java.net`,重点讲解了InetAddress类的功能,包括如何通过`getByName()`和`getByAddress()`获取实例,以及获取主机名、IP地址的方法`getCanonicalHostName()`、`getHostAddress()`和`getHostName()`。此外,还提到了`isReachable(timeout)`方法用于检测网络可达性的功能。

java为网络提供了java.net包,该包下的URL和URLConnection等类提供了已编程方式访问的web服务的功能。
java提供了InetAddress类来代表ip地址。
IntetAddress并没有构造器,而是提供了如下的两个静态的方法来获取InetAddress实例。

  1. getByName():根据主机获取对应的InetAddrress对象。
  2. getByAddress():根据原始的IP地址获取对应的InetAddress()对象
  3. 他提供了三个方法来获取InetAddress实例对应的ip地址和主机名:
    ①String getCanonicalHostName():用来获取局域网内的一台主机名
    ②String getHostAddress():获取ip地址的字符串
    ③String getHostName():获取ip地址的主机别名
    InetAddress还提供了一个isReachable(timeout)的方法,用于测试是否可以到达该地址(主机)。防火墙或者服务器配置可能阻塞请求。
    代码段
  import java.net.InetAddress;

public class ping {
    public static void main(String[] args) {
        try {
            //通过InetAddress类访问主机名,ip地址
            InetAddress indress = InetAddress.getByName("www.baidu.com");//获取对应Ip的inetAddress对象 存储了IP的主机名和ip地址
            String hostName = indress.getHostName();                //获取主机名
            String hostAddress = indress.getHostAddress();          //获取ip地址
            String hostAddress1 = ind
Java 中实现 ping 方法主要有两种常见方式:利用 Java网络编程功能和调用系统命令。 ### 利用 Java网络编程功能 通过 `InetAddress` 的 `isReachable` 方法来实现简单的 ping 功能,示例代码如下: ```java import java.io.IOException; import java.net.InetAddress; public class PingExample { public static void ping(String ipAddress) { try { InetAddress inet = InetAddress.getByName(ipAddress); boolean reachable = inet.isReachable(5000); // 超时时间 5000 毫秒 if (reachable) { System.out.println(ipAddress + " 可达"); } else { System.out.println(ipAddress + " 不可达"); } } catch (IOException e) { System.out.println("发生异常: " + e.getMessage()); } } public static void main(String[] args) { ping("127.0.0.1"); } } ``` ### 调用系统命令 通过 `Runtime.getRuntime().exec` 方法调用系统的 ping 命令,示例代码如下: ```java import java.io.IOException; import java.io.InputStream; public class PingBySystemCommand { public static void ping() { Runtime run = Runtime.getRuntime(); String cmdText = "ping 127.0.0.1"; Process process = null; try { process = run.exec(cmdText); process.waitFor(); byte[] buffer = new byte[256]; int cnt = 0; InputStream is = process.getInputStream(); while ((cnt = is.read(buffer)) >= 0) { System.out.print(new String(buffer, 0, cnt, "GBK")); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { ping(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值