IPAdresse ermitteln

18/09/2009 - 11:10 von Thomas Kehl | Report spam
Hallo zusammen.

Ich kann mit folgendem Code meine IPAdressen ermitteln:

var addresses = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName
()).AddressList

nun möchte ich aber nur diejenigen Adressen, die auch mit dem Netzwerk
verbunden sind. Hat jemand eine Idee, wie ich diese nun aus der
Auflistung addresses rausfiltern kann? Der Vorgang sollte zudem noch
sehr schnell sein.

Besten Dank im Voraus für eure Hilfe.

Grüsse, Thomas
 

Lesen sie die antworten

#1 Günter Prossliner
18/09/2009 - 15:06 | Warnen spam
Hallo Thomas!

Ich kann mit folgendem Code meine IPAdressen ermitteln:

var addresses = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName
()).AddressList

nun möchte ich aber nur diejenigen Adressen, die auch mit dem Netzwerk
verbunden sind.



Wenn es Dir um die Adressen von Lokalen Adaptern geht, würde ich nicht über
DNS gehen. Der DNS Server liefert Dir jene Adressen unter welchen der
Rechner von aussen erreichbar ist. Das müssen nicht unbedingt (alle) lokalen
Adressen sein.

Formuliere die Abfrage am besten so, dass Du von den Netzwerkkarten
ausgehst. Das ist im .NET Framework auch vollstàndig implementiert.

z.b:

using System.Net.NetworkInformation;

public IEnumerable<IPAddress> GetLocalUnicastAddressesWithNetworkAvailable()
{

foreach(var nic in NetworkInterface.GetAllNetworkInterfaces()){
if(nic.GetIsNetworkAvailable()) {
var ipProperties = nic.GetIPProperties();
foreach(var unicastAddress in ipProperties.UnicastAddresses){
yield return unicastAddress.Address;
}
}
}

}


Falls nötig hast Du über die Klassen im NetworkInformation Namespace Zugriff
auf sàmtliche Eigenschaften der Netzwerkkarten und deren
Protokoll-Konfiguration.


OK?
mfg GP

Ähnliche fragen