Abfrage der Lokalen IP-Adresse

Ich das Bedürfnis, zu wissen, meine tatsächliche lokale IP-Adresse (also nicht die loopback-Adresse) von einem Windows 8 WinRT/Metro app. Es gibt mehrere Gründe, die ich hier brauchen. Die einfachste ist, dass in der Benutzeroberfläche der app, die ich zeigen möchte, Sie text wie "Ihre lokalen Netzwerk-IP-Adresse: [IP-abgefragt-code]".

Nutzen wir auch die Adresse für einige zusätzliche Netzwerk-Kommunikation. Diejenigen, die comms sind vollkommen gültig, weil es funktioniert alles, wenn ich Blick auf die IP-Adresse in die Systemsteuerung, dann hart-code in der app. Um dem Benutzer in einen dialog zu gehen, Blick auf die Adresse und manuell eingeben, es ist etwas, was ich wirklich, wirklich wollen, zu vermeiden.

Ich würde denken, es wäre nicht eine komplexe Aufgabe, um die Adresse zu bekommen programmatisch, sondern meine Suchmaschine und StackOverflow-Fähigkeiten sind wieder leer.

An diesem Punkt fange ich an, berücksichtigen Sie dabei ein UDP-broadcast - /Hör-Schleife zu hören, meinen eigenen Wunsch, und extrahieren Sie die Adresse aus, aber das scheint wirklich eine hackey Schlamassel. Gibt es eine API, irgendwo in der neuen WinRT-Sachen, das wird mich dort?

Beachten Sie, dass ich sagte: "WinRT-app. Das bedeutet, dass die typischen Mechanismen wie Dns.GetHostEntry oder NetworkInterface.GetAllInterfaces() sind nicht zur Arbeit zu gehen.

  • Windows erkennt nur die Schnittstellen, wenn jemand weist Sie eine lokale Netzwerk-ip-Adresse an ein Netzwerkgerät, das ist die Adresse ( es gilt perfekt ). Was genau versuchen Sie zu tun mit der ip-Adresse? Sie sind kaum in der Lage sein zu tun, einen UDP-broadcast/hören auf nichts, aber die ip-Adresse der Schnittstelle kennt, der in den meisten Fällen ist eine lokale Netzwerk-Adresse, die nicht gültig außerhalb der besagten Netzwerk.
  • Werfen Sie einen Blick auf msdn.microsoft.com/en-us/library/windows/apps/...
  • nicht sicher, was ich betrachten sollten - und diese Dokumentation nicht Feld mit dem Verhalten sehe ich das mit der Consumer Preview und VS11 Beta. Zum Beispiel die docs zeigen NetworkIntrface.GetAllNetworkInterfaces() funktionieren sollte, aber es existiert nicht.
InformationsquelleAutor ctacke | 2012-04-26
Schreibe einen Kommentar