【问题标题】:Creating a DHCP client list java创建 DHCP 客户端列表 java
【发布时间】:2015-06-26 21:17:09
【问题描述】:

我正在尝试编写一个在 Java 中显示 DHCP 客户端列表的程序。我想获取连接到我的 wifi 网络的所有设备的 IP 地址MAC 地址主机名

我有一个贝尔金路由器。它的主页有一个“DHCP 客户端列表”选项,单击该选项会显示此表:

这正是我正在寻找的。但我想在 Java Swing 程序中以列表的形式显示所有这些数据。我还希望能够通过按刷新按钮来更新此列表。有什么方法可以实现吗?

它应该看起来像这样:

我编写了一个基本的 java 程序,显示所有在线的 IP 地址。这是代码:

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))
            {
            // machine is turned on and can be pinged
            System.out.println(address + "is online");
            }
            else if (!address.getHostAddress().equals(address.getHostName()))
            {
            // machine is known in a DNS lookup
            System.out.println(address + "is in a DNS lookup");
            }
            else
            {
            // the host address and host name are equal, meaning the host name could not be resolved
            System.out.println(address + " is not online");
        }
        }
}

但这并没有达到目的,而且真的很慢。我想编写一个Swing 程序,它会显示如上图所示的DHCP 客户端列表

感谢任何帮助。

【问题讨论】:

  • 您的问题似乎有点宽泛。您想创建一个 Swing 程序来显示数据,很好,但是您特别坚持哪一步?您的 Swing 代码尝试在哪里?您是否将问题分解为小的组成步骤并尝试一次解决每个步骤?如果没有,我想你会想从这个开始。
  • @HovercraftFullOfEels 我被困在从路由器的 Web 界面获取数据并将其发送到我的 Java Swing 程序的步骤上。我不知道如何开始。请用代码指导我。
  • @Camickr 请帮帮我

标签: java swing network-programming


【解决方案1】:

我会考虑三种可能的选择:

1-你实现的那个很慢,但它可以工作。你需要找到一个JAVA API来获取收到的消息的MAC地址(我不知道它是否存在)。您还可以发送 ARP 消息询问“谁有这个 IP 地址)并从响应中获取 MAC 地址。使用 pcap 库的一些 Java 接口:jNetPcap vs Jpcaphttp://jnetpcap.com/

2-创建一个应用程序,该应用程序使用 HTTP 访问路由器 Web 界面,并像使用 UI 一样发送带有数据的适当消息。通过这种方式,您可以以编程方式按照人类会执行的步骤获取浏览器显示的列表、解析它并获取数据。

3-如果路由器/接入点提供了 Web API,我对此表示怀疑,您可以使用它。

【讨论】:

  • 第二个选项最适合我。你说的那个app,可以用java写吗?我想在后台运行它。这样,该应用程序将与 Web 界面通信并向我的 Java Swing 程序发送所需的数据。你能帮我写代码吗?
  • 我同意。它可以很好地用Java编写。您必须使用客户端 HTTP 库,如果您还不知道,您将学习一些 HTTP 和 HTML。您可以完全在 Java 中生成您自己的 HTTP 消息。唯一的复杂情况是如果您必须使用 HTTPS,但使用 Java 也可以。为了了解您必须发送的消息和数据,您可以使用 Fiddler 来嗅探您的 HTTP 消息。
  • 好的。我对此很陌生。你能帮我写代码吗?
  • 网络上有很多例子。对于 HTTP 客户端,这里有一个链接:mkyong.com/java/apache-httpclient-examples。对于 Fiddler,请从此处下载:telerik.com/fiddler。这是一个很好的学习机会。阅读文档,安装 Fiddler,然后您将看到所有 HTTP 请求。
猜你喜欢
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多