java - InetAddress 类中的 isReachable 问题

标签 java networking icmp

作为一项作业,我必须找到 LAN 上所有 Activity 的计算机。为此,我正在使用 InetAddress 类的 isReachable 函数。但问题是我什么都看不到。所以我尝试使用 Google 的 IP 设置 isReachable,但仍然无法访问。

代码如下:

import java.net.*;

public class alive{
    public static void main(String args[]){
        try{
            InetAddress ia = InetAddress.getByAddress(new byte[]{(byte)209, (byte)85, (byte)153, (byte)104});
            boolean b = ia.isReachable(10000);
            if(b){
                System.out.println("Reachable");
            }
            else{
                System.out.println("Unrachable");
            }

        }catch(Exception e){
            System.out.println("Exception: " + e.getMessage());
        }
    }
}

输出是:无法访问

最佳答案

这里有一些关于为什么 isReachable() 可能并不总是按预期工作的细节

  1. http://bordet.blogspot.com/2006/07/icmp-and-inetaddressisreachable.html
  2. http://www.coderanch.com/t/206934/sockets/java/InetAdress-isReachable-Ping-Permissions

您的正确方法是使用 ICMP协议(protocol)。我相信这就是 ping 在国际上使用的东西。 Here is an example这让你开始。

关于java - InetAddress 类中的 isReachable 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4779367/

相关文章:

java - 单例程序中Static语句的使用和流程

java - 使用自动生成的键为数据库项创建 JUnit 测试

networking - 如何连接到DHT引导节点?

azure - az vm open-port icmp,这可能吗?

java - 如何向 jfreechart 创建的图表添加缩放功能

java - 从 Android 应用程序到动态 Web Servlet 的通信

c++ - 在套接字关闭之前不发送数据

networking - VagrantFile config.vm.network

android - 有没有办法让 android 设备响应发送到广播地址的 icmp ping?

linux - 嵌入式 Linux 设备检测互联网连接的智能方法