2017-03-01 7 views
0

Ich habe einen Java-basierten Server mit JmDNS, der von einer iOS-App erkannt wird.Auflösen eines Hostnamens aus Bonjour-Netzwerken

Die Entdeckung funktioniert gut und das ist der Rückruf, der von der NetServiceDelegate ausgeführt wird um die Details zu notieren:

public func netServiceDidResolveAddress(_ service: NetService) { 
    guard let hostName = service.hostName else { 
     return 
    } 

    mockServerUrl = "http://\(hostName):\(service.port)/analytics" 
    Logger.log("Using mock server at \(mockServerUrl)", forLevel: .info) 
} 

Dies führt zu einer URL, die wie folgt aussieht: http://az-mbp-ether-lan.local.:9090

Nun ich schwöre Das funktionierte, aber jetzt, wenn ich versuche, Daten mit Alamofire an diesen Endpunkt zu senden, überschreitet es ständig das Zeitlimit.

Das Ersetzen des Hostnamens durch die hartcodierte IP-Adresse des Zielcomputers führt dazu, dass es wieder funktioniert. Daher gibt es kein grundsätzliches Problem mit dem Code, der die Daten sendet.

Sollte eine Adresse des obigen Formulars auf ".local" enden. Von einem iOS-Gerät im selben Netzwerk wie der Zielserver auflösbar sein?

+0

Die delegierte Methode 'netServiceDidResolveAddres' ist für die Lösung der IPv4- und IPv6-Adressen:

ich meinen Code eine Nicht-Loopback-Adresse basierend auf dieser Frage zu finden überarbeitet. Es hat keine Auswirkung auf den Hostnamen, der sich nach 'didFindService' nicht ändert. – vadian

+0

Als ich die Adresse inspizierte, die zurück in das Adressenfeld kam, fand ich, dass es "127.0.0.1" war, das für Verbindung vom Telefon zum Bediener nutzlos scheint. – zorro2b

+0

Sie müssen die IPV4- oder IPv6-Adressen aus dem 'addresses'-Array in der' netServiceDidResolveAddress'-Methode extrahieren, die ein Array von '(NS) Data'-Objekten ist, die' struct sockaddr'-Objekte enthalten. – vadian

Antwort

0

Das Problem war auf der Java-Server-Seite. Es wurde durch den Aufruf von InetAddress.getLocalHost() registriert. Dies brachte die Loopback-Adresse zurück. IP Address not obtained in java

Verwandte Themen