8 Stimmen

Zeroconf Namensauflösung

Ich entwickle ein Steuergerät mit einem eingebetteten Webserver. Der Webserver bietet eine Steuerungsschnittstelle für jeden Webbrowser, der sie anfordert (Windows-Browser, Mac-Browser, iPhone, Android usw.).

Das Problem, das ich habe, besteht darin, allgemein zu wissen, wie man auf das Gerät zugreift, d. h. welche Adresse man in den Webbrowser eingeben muss.

Feste IPs sind für meine Benutzer zu technisch und könnten schief gehen, da mein Gerät an viele verschiedene lokale Netzwerke angeschlossen sein könnte. Die Erkennung von uPnp-Diensten erfordert bei einigen Plattformen eine Software auf dem Client und ist nicht so einfach wie die Eingabe einer Webadresse. Ich möchte die Namensauflösung implementieren.

Meine derzeitige Implementierung verwendet das netbios-Protokoll. Ich kann also in einem Windows-Browser //controller/ eingeben und es funktioniert, aber das funktioniert nicht mit Macs oder Smartphones. Ich kann zusätzlich versuchen, Apples mDnsresponder zu implementieren, was Macs und iPhones glücklich machen sollte (obwohl ich denke, dass ich dann auf //controller.local/ beschränkt bin). Vielleicht gibt es ähnliche Dinge auch für Android, Symbian usw., aber gibt es nicht eine universellere Lösung für die Erstellung eines Netzwerknamens, die ich versuchen könnte?

Die Plattform basiert derzeit auf einem TI Cortex M3 Prozessor und lwIP.

Für jede Hilfe oder jeden Vorschlag zur Lösung des Problems bin ich sehr dankbar.

Mit freundlichen Grüßen,

Bob

2voto

evadeflow Punkte 4454

Damit Windows-Benutzer Ihr Gerät mit Zeroconf "automatisch" finden können, müssen sie dies tun:

  1. Installieren Sie einen mDNS-Daemon (wie den mDNSResponder das Sie erwähnt haben und das kostenlos bei Apple erhältlich ist)
  2. Haben Sie eine zweite eine installierte Software, die in der Lage ist, Anfragen an den mDNS-Daemon zu stellen und verfügbare Dienste im lokalen Netz anzuzeigen (z. B. der integrierte Webserver Ihres Geräts)

Bonjour für Windows wird mit einem Internet-Explorer-Plugin geliefert, das für Punkt 2 ausreicht und für Ihre Benutzer vielleicht nicht zu technisch ist. (Sie müssten lediglich Bonjour für Windows herunterladen und installieren und das Kästchen zur Installation des Internet Explorer-Plugins ankreuzen). Mac-Benutzer könnten einfach den Safari-Browser verwenden, der bereits Zeroconf-fähig ist.

Der letzte Teil des Puzzles - und der schwierigste Teil - besteht darin, dass Sie Ihre eigene Software ändern müssen, um Ihren Controller beim "lokalen mDNS-Daemon" zu registrieren. Vermutlich gibt es so etwas aber nicht, weil Ihr "Steuergerät" ein eingebettetes System ist. Sie müssten also einen eigenen mDNS-Daemon mit einfachen Mitteln schreiben. Das ist nicht dass schwer zu machen, und Sie können Apples mDNSPosix Code als Ausgangspunkt. Abhängig von Ihren Hardware-Einschränkungen ist dies jedoch möglicherweise nicht möglich.

Alles in allem kann Zeroconf ein komplizierter Stapel von Protokollen sein, mit dem man arbeiten muss. Der Aspekt der "Null-Konfiguration" bezieht sich nur auf die Erfahrung des Benutzers. Für einen Entwickler ist die Lernkurve ziemlich steil. Wenn Ihre Benutzer in der Regel nur über ein einzeln Instanz Ihres Geräts läuft, kann das zu viel sein.

1voto

Bernd Elkemann Punkte 22855

Ich denke, Sie können DynDns (www.dyndns.org) verwenden, es ist kostenlos für das, was Sie zu tun versuchen. Sie können es auch verwenden, wenn Sie keine Möglichkeit haben, eine feste IP-Adresse zu erhalten. In diesem Fall würden Sie das Dienstprogramm dyndns updater verwenden. Sie könnten z. B. unserenFirmennamen.dyndns.org registrieren und es wird immer zu Ihrem lokalen Computer weitergeleitet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X