Frage

Ich bin mit der Verwendung von Bonjour für Werbedienste in der "lokalen" Domain vertraut. Ich habe mehrere Beispiele durchgearbeitet und kenne die entsprechenden Kakaoklassen, die ich dafür verwende.

Ich bin gespannt, wie ich für einen einfachen Bonjour -Service für ein anderes Subnetz Werbung mache. Insbesondere versuche ich, einen Netzwerkdienst zu schreiben, der auf meinem Desktop ausgeführt wird, der über Ethernet verbunden ist. Der Client wird auf einem mobilen Gerät (iPhone/iPad) ausgeführt, das über WLAN verbunden ist. In meinem Netzwerk -Setup befindet sich das WLAN auf einem anderen Subnetz als das Ethernet. Beide stehen jedoch hinter der Firewall. Ich muss nicht außerhalb der Firewall werben. Ich möchte nur, dass WLAN -Clients in der Lage sein, Dienste zu sehen, die von einem Ethernet Connected Server angekündigt werden.

Ist das möglich? Ich weiß, dass Bonjour die Kommunikation über Subnetze hinweg unterstützen soll, aber wenn ich versuche, über diese Funktion zu lesen, taucht sie tief in DNS -Rekorde ein und so weiter. Ich bin ein Anwendungsentwickler ... Ich habe keine Ahnung von diesem Zeug, und ich möchte auch nicht, dass Benutzer sich darüber Sorgen machen müssen. Vermisse ich etwas Einfaches?

War es hilfreich?

Lösung

Dies ist keine typische Programmierfrage, aber ich sehe, dass es ein großes Hindernis für das Testen Ihres Bonjour -basierten Codes ist.

Bonjour unterstützt zwei Mechanismen für Server, um Kunden über ihre Existenz zu informieren, Multicasts im lokalen Netzwerk zuerst, DNS zweitens.

Multicasts sind einfach zu bedienen, da es kein Setup gibt, leider kann es nur im selben Netzwerk verwendet werden.

DNS hat den Luxus, in Router (Internet) hinweg zu arbeiten, erfordert jedoch einen ordnungsgemäß konfigurierten Namenserver und Clients mit diesem Namenserver.

Ich denke, Sie haben nur zwei Optionen.

  1. Bewerben Sie Ihren Bonjour -Service im WLAN -Netzwerk
  2. Konfigurieren Sie Ihre eigenen DNS

Im ersten Fall ist es wichtig zu erkennen, dass der Dienst nicht unbedingt von Ihrer eigenen Anwendung auf einem Mac ausgeschrieben werden muss. Sie können das Dienstprogramm verwenden dns-sd So registrieren Sie eine IP -Adresse/einen beliebigen Bonjour -Dienst im Netzwerk. Damit dies funktioniert, benötigen Sie eine Maschine (MAC, Linux), die mit Ihrem WLAN verbunden ist, und laufen dns-sd In ähnlicher Weise wie folgt:

dns-sd -P "Stack Overflow" _http._tcp . 80 stackoverflow.com 69.59.196.211

Dies würde einen "HTTP" -Dienst mit dem Namen "Stack Overflow" als Bonjour -Service registrieren. Probieren Sie es aus - führen Sie es im Terminal aus und überprüfen Sie es in Safari's Lesezeichen unter Bonjour. Genauso wie können Sie Ihre Bewerbung registrieren.

Leider müssen Sie dies auf einer Maschine ausführen, die mit dem WLAN -Netzwerk verbunden ist. Das bedeutet, dass Ihre Mac -Anwendung in einem eigenen Ethernet -Netzwerk wirbt. dns-sd Werbung für WLAN.

Die zweite Option ist etwas beängstigend, aber es ist keine große Sache, wenn Sie bereit sind, mit einer Verwaltung die Hände schmutzig zu werden.

Auch hier müssen Sie keine Dienste in DNS dynamisch registrieren lassen. Sie können einfach den Namen Ihres Macs und den Port Ihrer App in der DNS -Konfiguration codieren. Dies sind nur 4 Zeilen, die zur Zonendatei (DNS -Konfigurationsdatei) hinzugefügt werden müssen.

b._dns-sd._udp  IN PTR @   ;  b = browse domain
lb._dns-sd._udp IN PTR @   ; lb = legacy browse domain
_icool._tcp  PTR iCool\ App\ Service._http._tcp
iCool\ App\ Service._http._tcp     SRV 0 0 8888 macpro.domain.com.

Die ersten beiden Zeilen geben Kunden (iOS -Geräte in Ihrem Fall) mit, dass Bonjour für diese Domäne aktiviert ist. Die dritte Zeile teilt den Kunden mit, dass es einen Service "ICOOL App -Service" vom Typ gibt icool verfügbar. Die vierte Zeile gibt den Kunden aktuelle Adresse und Port des Dienstes an.

Clients suchen nach DNS -Einträgen für ihre Konfiguration (oder erhalten über DHCP) "Suchdomänen". Überprüfen Sie Ihre Netzwerkeinstellungen.

Sie können Namenserver auf Ihrem Mac, einer Linux -Box, oder Diensten wie Dyndns.com ausführen.

Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top