作为我正在开发的应用程序的一部分,我需要能够解析与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();