3 Stimmen

Dns.GetHostEntry liefert falsche IP-Adressen auf Windows Mobile

Dies geschieht auf einem Handheld, der über USB mit meinem Computer verbunden ist und das Compact Framework verwendet:

Wenn ich Dns.GetHostEntry("") oder Dns.GetHostEntry(IPAddress.Loopback) aufrufe, um die IP-Adressen des Handhelds zu erhalten, erhalte ich die IP-Adressen meines Host-Computers. Wenn ich jedoch ein Paket vom Handheld an meinen Computer sende, kommen sie von einer anderen Adresse.

Gibt es eine Möglichkeit, dies zu verhindern? Würde der direkte Aufruf der DLLs über P/Invoke das Problem lösen?

Der Handheld ist nicht über WiFi oder Bluetooth verbunden. Die einzige Verbindung erfolgt über USB.

2voto

ctacke Punkte 65813

Wenn Sie Dns.GetHostEntry("") aufrufen, sollten Sie einen einzigen Eintrag in der IPHostEntry.AddressList von 127.0.0.1 zurückbekommen (und tatsächlich zeigt ein kurzer Test genau das). Dns.GetHostEntry(IPAddress.Loopback) gibt zwei Einträge zurück: 127.0.0.1 und ::1.

Beide geben nicht die IP-Adresse des Host-PCs zurück, und beide sollten auch nicht die IP-Adresse des Geräts zurückgeben. Wenn Sie die IP-Adresse des Geräts benötigen, verwenden Sie etwas wie dieses:

IPHostEntry hostent = Dns.GetHostEntry(Dns.GetHostName());

foreach (var addr in hostent.AddressList)
{
    Debug.WriteLine(addr.ToString());
}

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