Ottieni indirizzo IP locale in C#
-
Ottieni indirizzo IP locale con la funzione
Dns.GetHostEntry()
inC#
-
Ottieni indirizzo IP locale con la proprietà
Socket.LocalEndPoint
inC#
-
Ottieni indirizzo IP locale con Linq in
C#
-
Ottieni indirizzo IP locale con la classe
NetworkInterface
inC#
In questo tutorial, discuteremo i metodi per ottenere l’indirizzo IP locale della nostra macchina in C#.
Ottieni indirizzo IP locale con la funzione Dns.GetHostEntry()
in C#
La classe Dns
ottiene le informazioni relative a un host su Internet. Ci sono molti metodi nella classe Dns
per le funzionalità relative al DNS in C#. La funzione Dns.GetHostEntry()
viene utilizzata per ottenere l’indirizzo IP di un host.
Il seguente esempio di codice ci mostra come possiamo ottenere l’indirizzo IP locale della nostra macchina con la funzione Dns.GetHostEntry()
in C#.
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());
}
}
}
}
Produzione:
IP Address 0 : fe80::1db8 : 23a7 : 6483 : 8976 % 20 IP Address 1 : 192.168.43.239
Nel codice precedente, abbiamo passato la funzione Dns.GetHostName()
come parametro della funzione Dns.GetHostEntry()
per ottenere l’indirizzo IP della nostra macchina locale in C#. L’unico problema con questo metodo è che ci fornisce tutti gli indirizzi IP della macchina. Per ottenere l’indirizzo IP specifico, dobbiamo scrivere il codice seguente in C#.
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());
}
}
}
}
}
Produzione:
IP Address = 192.168.43.239
Nel codice sopra, abbiamo verificato se ip.AddressFamily
era uguale a AddressFamily.InterNetwork
. Questa condizione controlla se l’indirizzo IP nella variabile ip
è un indirizzo IPv4 o meno. Il codice sopra restituisce solo l’indirizzo IPv4 della nostra macchina. Se vogliamo ottenere l’indirizzo IPv6 della nostra macchina, possiamo usare l’attributo AddressFamily.InterNetworkV6
invece di AddressFamily.InterNetwork
.
Ottieni indirizzo IP locale con la proprietà Socket.LocalEndPoint
in C#
Un modo più accurato per ottenere l’indirizzo IP locale della nostra macchina quando ci sono più indirizzi IP è connettere un socket UDP e quindi leggere il suo endpoint locale. La classe Socket
in C# implementa l’interfaccia dei socket Berkeley, che fornisce funzionalità per la comunicazione di rete. Il seguente esempio di codice ci mostra come possiamo usare la proprietà Socket.LocalEndPoint
per determinare l’indirizzo IP locale della nostra macchina in C#.
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);
}
}
}
Produzione:
IP Address = 192.168.43.239
Nel codice precedente, abbiamo collegato il Socket socket
alla nostra macchina locale ed abbiamo estratto l’endpoint locale del socket
con l’attributo socket.LocalEndPoint
. Abbiamo utilizzato l’attributo endPoint.Address
per ottenere l’indirizzo IP di endPoint
.
Ottieni indirizzo IP locale con Linq in C#
La query integrata Linq o Language fornisce funzionalità SQL in C#. Possiamo anche usare Linq e la funzione Dns.GetHostEntry()
per ottenere l’indirizzo IP locale della nostra macchina in C#.
Il seguente esempio di codice ci mostra come possiamo usare Linq per ottenere l’indirizzo IP locale della nostra macchina in C#.
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);
}
}
}
Produzione:
192.168.43.239
Nel codice sopra, abbiamo determinato l’indirizzo IPv4 locale della nostra macchina utilizzando Linq con la funzione Dns.GetHostEntry()
in C#. Il resto del codice è simile al nostro primo esempio; l’unica differenza è che abbiamo estratto un solo indirizzo IPv4 dall’lista di indirizzi restituiti dalla funzione Dns.GetHostEntry()
.
Ottieni indirizzo IP locale con la classe NetworkInterface
in C#
La classe NetworkInterface
contiene i dati sulle interfacce di rete sulla nostra macchina locale e fornisce statistiche e configurazione per le interfacce di rete. La funzione GetAllNetworkInterfaces()
nella classe NetworkInterface
ci fornisce tutte le interfacce di rete sulla nostra macchina locale. La proprietà NetworkInterfaceType
nella classe NetworkInterface
viene utilizzata per ottenere il tipo di interfaccia di rete.
Il seguente esempio di codice mostra come possiamo usare tutte queste funzioni per ottenere l’indirizzo IP locale della nostra macchina locale in C#.
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);
}
}
}
Produzione:
IP Address = 192.168.43.239
Abbiamo recuperato l’indirizzo IPv4 WLAN della nostra macchina locale con la classe NetworkInterface
in C# nel codice sopra. Il codice sopra può essere utilizzato per ottenere qualsiasi tipo di indirizzo IP sulla nostra macchina locale. Ad esempio, se vogliamo ottenere l’indirizzo IP dell’interfaccia Ethernet, dobbiamo specificarlo nella chiamata alla funzione passando NetworkInterfaceType.Ethernet
.
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