Als Teil einer App, die ich entwickle, muss ich in der Lage sein, die richtige IP zu finden, die einem Bonjour Hostnamen entspricht .
Zum Beispiel habe ich jack.local
und muss es in 192.168.1.141
auflösen, das ist die IP-Adresse, die jack zugeordnet ist.
Ich habe die JmDNS-APIs durchgekämmt, und die meisten, die ich finden kann, sind Methoden, die es ermöglichen, einen Dienst aufzulösen, wenn der Typ und der Name bekannt sind. Ich kann jedoch nichts finden, was die Auflösung eines Hostnamens erlauben würde.
Also vermisse ich etwas? Gibt es wirklich keine Möglichkeit, einen Hostnamen mit JmDNS aufzulösen?
Wenn Sie den Remote-Hostnamen im LAN von der IP-Adresse mithilfe von JmDNS herausfinden müssen, können Sie den folgenden Code verwenden. Wenn Sie eine Zuordnung von Hostname zu IP vornehmen müssen, können Sie Hostnamen für alle Ihre Subnetz-IPs auflösen, um einen Cache zu erstellen. Wenn Ihre native Namensauflösung lokale Bonjour-Namen unterstützt, können Sie einfach InetAddress.getByName (Hostname) .getHostAddress () verwenden.
%Vor%Mit jmdns hören Sie Dienste an. Zum Abonnieren verwenden Sie die Funktionen
%Vor% Sobald jmdns einen Dienst findet, wird ServiceListener
benachrichtigt. Der Listener hat drei öffentliche Funktionen:
mit jedem bekommt man ServiceEvent
. Rufen Sie jetzt event.getInfo().getHostAddresses()
auf, um ein Array aller Adressen des Hosts zu erhalten.
Wenn Sie den Service auflösen möchten, müssen Sie
anrufen %Vor%in der serviceAdded-Methode.
Sehen Sie sich dazu Quick Tutorial
an