作为我正在开发的应用程序的一部分,我需要能够解析与Bonjour hostname相对应的正确IP。

例如,我得到了jack.local,需要将其解析为192.168.1.141,它是与jack关联的IP地址。

我一直在梳理JmDNS API,在类型和名称已知的情况下,我能找到的最多就是允许解析服务的方法。但是,我根本找不到能够解析主机名的任何内容。

那我想念什么吗?真的没有办法使用JmDNS解析主机名吗?

最佳答案

如果您需要使用JmDNS从IP地址中查找LAN中的远程主机名,则可以使用以下代码。如果需要从主机名映射到IP,则可以解析所有子网IP的主机名以建立缓存。如果您的本地名称解析支持本地Bonjour名称,则可以仅使用InetAddress.getByName(hostname).getHostAddress()。

    final JmDNSImpl jmdns = new JmDNSImpl(null, null);
    final HostInfo hostInfo = HostInfo.newHostInfo(InetAddress.getByName("192.168.1.78"), jmdns, null);
    System.out.println("MDNS hostname (Bonjour): " + hostInfo.getName());
    System.out.println("DNS hostname: " + hostInfo.getInetAddress().getHostName());
    System.out.println("IP address: " + hostInfo.getInetAddress().getHostAddress());
    jmdns.close();

10-07 19:16