372 Stimmen

Wie erhalte ich die IP-Adresse des Servers, auf dem meine C#-Anwendung ausgeführt wird?

Ich betreibe einen Server, und ich möchte meine eigene IP-Adresse anzeigen.

Wie lautet die Syntax für die Ermittlung der eigenen (wenn möglich externen) IP-Adresse des Computers?

Jemand hat den folgenden Code geschrieben.

IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    if (ip.AddressFamily.ToString() == "InterNetwork")
    {
        localIP = ip.ToString();
    }
}
return localIP;

Allerdings misstraue ich dem Autor generell, und ich verstehe diesen Code nicht. Gibt es einen besseren Weg, dies zu tun?

16voto

opedog Punkte 726
using System.Net;

string host = Dns.GetHostName();
IPHostEntry ip = Dns.GetHostEntry(host);
Console.WriteLine(ip.AddressList[0].ToString());

Ich habe dies gerade auf meinem Rechner getestet und es funktioniert.

15voto

reza Punkte 1289

Wenn Sie die Verwendung von DNS vermeiden wollen:

List<IPAddress> ipList = new List<IPAddress>();
foreach (var netInterface in NetworkInterface.GetAllNetworkInterfaces())
{
    foreach (var address in netInterface.GetIPProperties().UnicastAddresses)
    {
        if (address.Address.AddressFamily == AddressFamily.InterNetwork)
        {
            Console.WriteLine("found IP " + address.Address.ToString());
            ipList.Add(address.Address);
        }
    }
}

8voto

bæltazor Punkte 433

Ich dachte nur, dass ich meinen eigenen Einzeiler hinzufügen würde (auch wenn es bereits viele andere nützliche Antworten gibt).


string ipAddress = new WebClient().DownloadString("http://icanhazip.com");

4voto

Um die aktuelle öffentliche IP-Adresse zu erhalten, müssen Sie lediglich eine ASPX-Seite mit der folgenden Zeile im Seitenladeereignis erstellen:

Response.Write(HttpContext.Current.Request.UserHostAddress.ToString());

4voto

Guilherme Ferreira Punkte 2081

Wenn Sie im Intranet arbeiten, können Sie die IP-Adresse des lokalen Rechners abrufen, andernfalls erhalten Sie eine externe IP-Adresse: Web:

//this will bring the IP for the current machine on browser
System.Web.HttpContext.Current.Request.UserHostAddress

Schreibtisch:

//This one will bring all local IPs for the desired namespace
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

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