java - 从 PING 扫描中检索 MAC 地址

标签 java ping ethernet

我开发了一个代码,使我能够 ping 一系列 IP 地址。我的 ping 扫描结果确定了哪些本地计算机可以访问,如果可以访问,则确定主机名,如果无法访问,也可以确定。

我目前在检索可访问 IP 地址的 MAC 地址时遇到问题。有人有解决方案吗?

package networkping;

import java.io.IOException;
import java.net.InetAddress;

/**
*
* @author Learner
*/
public class Networkping {


public static void main(String[] args) throws IOException {

    InetAddress localhost = InetAddress.getLocalHost();
    // this code assumes IPv4 is used
    byte[] ip = localhost.getAddress();

    for (int i = 1; i <= 254; i++)
    {
        ip[3] = (byte)i;
        InetAddress address = InetAddress.getByAddress(ip);
        if (address.isReachable(1000))
        {
            System.out.println(address + " Address is reachable" );

        }
        else if (!address.getHostAddress().equals(address.getHostName()))
        {
            System.out.println(address + " Address is known in a DNS lookup and is reachable ");
        }
        else
        {
            System.out.println(address + " Address is unreachable");
        }
    }

}

谢谢

最佳答案

仅使用 java 无法做到这一点。

有两个选项:

  • 通过 java 执行另一个进程,并通过标准输出与原始 java 应用程序进行通信。例如,这样的过程就是 ARP
  • 按照评论中的建议使用 JNI。

另请查看以下资源/答案:

第二个资源甚至有一个调用 ARP 的实现方法,名为 private String getMac(String ip)

关于java - 从 PING 扫描中检索 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482748/

相关文章:

java - 为什么索引切片查询似乎需要随机但一致的时间来加载数据?

java - 尝试获取响应代码时代码挂起

ping - 您可以在 Java 中运行真正的 ping 吗?

c# - 什么是快速测试多个盒子 ping 的最佳方法

c - 通过UDP协议(protocol)发送巨大的(大约40K字节)数据,怎么可能呢?

python - 为什么在 python 中使用套接字嗅探 wifi 帧时我得到以太网帧(不是 802.11)

c - 有可用的 mbed 以太网接口(interface)库吗?

java - 如何迭代字符串列表以将每个单词的最后一个字母更改为大写?

java - 具有解码器问题的 Kafka Avro 消费者

java - 如何从 sql server 2005 读取 java Servlet 中的阿拉伯字母?