8

私が開発しているアプリの一部として、Bonjourホスト名に対応する正しい IP を解決できる必要があります。

たとえば、ジャックに関連付けられている IP アドレスが与えられjack.local、それを解決する必要があります。192.168.1.141

私は JmDNS API をくまなく調べてきましたが、タイプと名前がわかっている場合にサービスを解決できるメソッドがほとんどです。ただし、ホスト名を解決できるものは何も見つかりません。

それで、私は何かを逃していますか?JmDNSを使用してホスト名を解決する方法は本当にありませんか?

4

2 に答える 2

0

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();
于 2015-01-18T19:58:41.187 に答える
-1

jmdns を使用すると、サービスをリッスンします。サブスクライブするには、関数を使用します

jmdns = JmDNS.create();
jmdns.addServiceListener(String type, ServiceListener listener);

jmdns がサービスを見つけると、ServiceListener通知が届きます。リスナーには 3 つのパブリック関数があります。

serviceResolved(ServiceEvent event)
serviceRemoved(ServiceEvent event)
serviceAdded(ServiceEvent event)

みんなであなたが得るServiceEvent。を呼び出しevent.getInfo().getHostAddresses()て、ホストのすべてのアドレスの配列を取得します。

サービスを解決したい場合は、電話する必要があります

jmdns.requestServiceInfo(event.getType(), event.getName(), 1);

serviceAdded メソッドで。

見てください:クイックチュートリアル

于 2013-01-24T13:02:57.740 に答える