Lokale IP-Adresse abrufen in C#
-
Abrufen der lokalen IP-Adresse mit der Funktion
Dns.GetHostEntry()
inC#
-
Abrufen der lokalen IP-Adresse mit der Eigenschaft
Socket.LocalEndPoint
inC#
-
Holen Sie sich die lokale IP-Adresse mit Linq in
C#
-
Abrufen der lokalen IP-Adresse mit der Klasse
NetworkInterface
inC#
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.
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