Lokale IP-Adresse abrufen in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Abrufen der lokalen IP-Adresse mit der Funktion Dns.GetHostEntry() in C#
  2. Abrufen der lokalen IP-Adresse mit der Eigenschaft Socket.LocalEndPoint in C#
  3. Holen Sie sich die lokale IP-Adresse mit Linq in C#
  4. Abrufen der lokalen IP-Adresse mit der Klasse NetworkInterface in C#
Lokale IP-Adresse abrufen in C#

In diesem Lernprogramm werden Methoden zum Abrufen der lokalen IP-Adresse unseres Computers in C# erläutert.

Abrufen der lokalen IP-Adresse mit der Funktion Dns.GetHostEntry() in C#

Die Klasse Dns ruft die Informationen zu einem Host im Internet ab. In der Klasse Dns gibt es viele Methoden für DNS-bezogene Funktionen in C#. Mit der Funktion Dns.GetHostEntry() wird die IP-Adresse eines Hosts abgerufen.

Das folgende Codebeispiel zeigt uns, wie wir die lokale IP-Adresse unseres Computers mit der Funktion Dns.GetHostEntry() in C# abrufen können.

using System;
using System.Net;

namespace get_local_ip_address {
  class Program {
    static void Main(string[] args) {
      String strHostName = string.Empty;
      IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
      IPAddress[] addr = ipEntry.AddressList;

      for (int i = 0; i < addr.Length; i++) {
        Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
      }
    }
  }
}

Ausgabe:

IP Address 0: fe80::1db8:23a7:6483:8976%20
IP Address 1: 192.168.43.239

Im obigen Code haben wir die Funktion Dns.GetHostName() als Parameter der Funktion Dns.GetHostEntry() übergeben, um die IP-Adresse unseres lokalen Computers in C# abzurufen. Das einzige Problem bei dieser Methode ist, dass wir alle IP-Adressen des Computers erhalten. Um die spezifische IP-Adresse zu erhalten, müssen wir den folgenden Code in C# schreiben.

using System;
using System.Net;

namespace get_local_ip_address {
  class Program {
    static void Main(string[] args) {
      var host = Dns.GetHostEntry(Dns.GetHostName());
      foreach (var ip in host.AddressList) {
        if (ip.AddressFamily == AddressFamily.InterNetwork) {
          Console.WriteLine("IP Address = " + ip.ToString());
        }
      }
    }
  }
}

Ausgabe:

IP Address = 192.168.43.239

Im obigen Code haben wir überprüft, ob die ip.AddressFamily gleich AddressFamily.InterNetwork ist. Diese Bedingung prüft, ob die IP-Adresse in der Variablen ip eine IPv4-Adresse ist oder nicht. Der obige Code gibt nur die IPv4-Adresse unseres Computers zurück. Wenn wir die IPv6-Adresse unseres Computers erhalten möchten, können wir das Attribut AddressFamily.InterNetworkV6 anstelle des Attributs AddressFamily.InterNetwork verwenden.

Abrufen der lokalen IP-Adresse mit der Eigenschaft Socket.LocalEndPoint in C#

Eine genauere Methode zum Abrufen der lokalen IP-Adresse unseres Computers bei mehreren IP-Adressen besteht darin, einen UDP-Socket anzuschließen und dann den lokalen Endpunkt zu lesen. Die Klasse Socket in C# implementiert die Berkeley-Sockets-Schnittstelle, die Funktionen für die Netzwerkkommunikation bereitstellt. Das folgende Codebeispiel zeigt uns, wie wir mit der Eigenschaft Socket.LocalEndPoint die lokale IP-Adresse unseres Computers in C# ermitteln können.

using System;
using System.Net;
using System.Net.Sockets;

namespace get_local_ip_address {
  class Program {
    static void Main(string[] args) {
      string localIP = string.Empty;
      using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0)) {
        socket.Connect("8.8.8.8", 65530);
        IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
        localIP = endPoint.Address.ToString();
      }
      Console.WriteLine("IP Address = " + localIP);
    }
  }
}

Ausgabe:

IP Address = 192.168.43.239

Im obigen Code haben wir den Socket socket mit unserem lokalen Computer verbunden und den lokalen Endpunkt des Sockets socket mit dem Attribut socket.LocalEndPoint extrahiert. Wir haben das Attribut endPoint.Address verwendet, um die IP-Adresse des endPoint abzurufen.

Holen Sie sich die lokale IP-Adresse mit Linq in C#

Die integrierte Abfrage Linq oder Sprache bietet SQL-Funktionen in C#. Wir können auch Linq und die Funktion Dns.GetHostEntry() verwenden, um die lokale IP-Adresse unseres Computers in C# abzurufen.

Das folgende Codebeispiel zeigt uns, wie wir mit Linq die lokale IP-Adresse unseres Computers in C# abrufen können.

using System;
using System.Linq;
using System.Net;

namespace get_local_ip_address {
  class Program {
    static void Main(string[] args) {
      if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
        Console.WriteLine("No Network Available");
      }

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

      var ippaddress =
          host.AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
      Console.WriteLine(ippaddress);
    }
  }
}

Ausgabe:

192.168.43.239

Im obigen Code haben wir die lokale IPv4-Adresse unseres Computers mithilfe von Linq mit der Funktion Dns.GetHostEntry() in C# ermittelt. Der Rest des Codes ähnelt unserem ersten Beispiel. Der einzige Unterschied besteht darin, dass wir nur eine IPv4-Adresse aus der Liste der von der Funktion Dns.GetHostEntry() zurückgegebenen Adressen extrahiert haben.

Abrufen der lokalen IP-Adresse mit der Klasse NetworkInterface in C#

Die Klasse NetworkInterface enthält Daten zu den Netzwerkschnittstellen auf unserem lokalen Computer und bietet Statistiken und Konfigurationen für die Netzwerkschnittstellen. Die Funktion GetAllNetworkInterfaces() in der Klasse NetworkInterface gibt uns alle Netzwerkschnittstellen auf unserem lokalen Computer. Die Eigenschaft NetworkInterfaceType in der Klasse NetworkInterface wird verwendet, um den Typ der Netzwerkschnittstelle abzurufen.

Das folgende Codebeispiel zeigt, wie wir all diese Funktionen verwenden können, um die lokale IP-Adresse unseres lokalen Computers in C# abzurufen.

using System;
using System.Linq;
using System.Net;

namespace get_local_ip_address {
  class Program {
    public static void getLocalIPAddressWithNetworkInterface(NetworkInterfaceType _type) {
      string output = "";
      foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) {
        if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up) {
          foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) {
            if (ip.Address.AddressFamily == AddressFamily.InterNetwork) {
              output = ip.Address.ToString();
            }
          }
        }
      }
      Console.WriteLine("IP Address = " + output);
    }
    static void Main(string[] args) {
      getLocalIPAddressWithNetworkInterface(NetworkInterfaceType.Wireless80211);
    }
  }
}

Ausgabe:

IP Address = 192.168.43.239

Wir haben die WLAN-IPv4-Adresse unseres lokalen Computers mit der Klasse NetworkInterface in C# im obigen Code abgerufen. Der obige Code kann verwendet werden, um jede Art von IP-Adresse auf unserem lokalen Computer abzurufen. Wenn wir beispielsweise die IP-Adresse der Ethernet-Schnittstelle erhalten möchten, müssen wir diese im Funktionsaufruf angeben, indem wir NetworkInterfaceType.Ethernet übergeben.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Csharp Network