Obtener la dirección IP local en C#
-
Obtenga la dirección IP local con la función
Dns.GetHostEntry()
enC#
-
Obtenga la dirección IP local con la propiedad
Socket.LocalEndPoint
enC#
-
Obtenga una dirección IP local con Linq en
C#
-
Obtenga la dirección IP local con la clase
NetworkInterface
enC#
En este tutorial, discutiremos métodos para obtener la dirección IP local de nuestra máquina en C#.
Obtenga la dirección IP local con la función Dns.GetHostEntry()
en C#
La clase Dns
obtiene la información relacionada con un host en Internet. Hay muchos métodos en la clase Dns
para la funcionalidad relacionada con DNS en C#. La función Dns.GetHostEntry()
se utiliza para obtener la dirección IP de un host.
El siguiente ejemplo de código nos muestra cómo podemos obtener la dirección IP local de nuestra máquina con la función Dns.GetHostEntry()
en 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());
}
}
}
}
Producción :
IP Address 0: fe80::1db8:23a7:6483:8976%20
IP Address 1: 192.168.43.239
En el código anterior, pasamos la función Dns.GetHostName()
como parámetro de la función Dns.GetHostEntry()
para obtener la dirección IP de nuestra máquina local en C#. El único problema con este método es que nos da todas las direcciones IP de la máquina. Para obtener la dirección IP específica, tenemos que escribir el siguiente código en 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());
}
}
}
}
}
Producción :
IP Address = 192.168.43.239
En el código anterior, verificamos si ip.AddressFamily
era igual a AddressFamily.InterNetwork
. Esta condición comprueba si la dirección IP en la variable ip
es una dirección IPv4 o no. El código anterior solo devuelve la dirección IPv4 de nuestra máquina. Si queremos obtener la dirección IPv6 de nuestra máquina, podemos usar el atributo AddressFamily.InterNetworkV6
en lugar del atributo AddressFamily.InterNetwork
.
Obtenga la dirección IP local con la propiedad Socket.LocalEndPoint
en C#
Una forma más precisa de obtener la dirección IP local de nuestra máquina cuando hay varias direcciones IP es conectar un socket UDP y luego leer su punto final local. La clase Socket
en C# implementa la interfaz de sockets de Berkeley, que proporciona funcionalidad para la comunicación en red. El siguiente ejemplo de código nos muestra cómo podemos usar la propiedad Socket.LocalEndPoint
para determinar la dirección IP local de nuestra máquina en 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);
}
}
}
Producción :
IP Address = 192.168.43.239
En el código anterior, conectamos el Socket socket
a nuestra máquina local y extrajimos el punto final local del socket
con el atributo socket.LocalEndPoint
. Usamos el atributo endPoint.Address
para obtener la dirección IP del endPoint
.
Obtenga una dirección IP local con Linq en C#
La consulta integrada Linq o Language proporciona funcionalidad SQL en C#. También podemos usar Linq y la función Dns.GetHostEntry()
para obtener la dirección IP local de nuestra máquina en C#.
El siguiente ejemplo de código nos muestra cómo podemos usar Linq para obtener la dirección IP local de nuestra máquina en 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);
}
}
}
Producción :
192.168.43.239
En el código anterior, determinamos la dirección IPv4 local de nuestra máquina usando Linq con la función Dns.GetHostEntry()
en C#. El resto del código es similar a nuestro primer ejemplo; la única diferencia es que extrajimos solo una dirección IPv4 de la lista de direcciones devuelta por la función Dns.GetHostEntry()
.
Obtenga la dirección IP local con la clase NetworkInterface
en C#
La clase NetworkInterface
contiene datos sobre las interfaces de red en nuestra máquina local y proporciona estadísticas y configuración para las interfaces de red. La función GetAllNetworkInterfaces()
en la clase NetworkInterface
nos da todas las interfaces de red en nuestra máquina local. La propiedad NetworkInterfaceType
en la clase NetworkInterface
se utiliza para obtener el tipo de interfaz de red.
El siguiente ejemplo de código muestra cómo podemos usar todas estas funciones para obtener la dirección IP local de nuestra máquina local en 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);
}
}
}
Producción :
IP Address = 192.168.43.239
Recuperamos la dirección WLAN IPv4 de nuestra máquina local con la clase NetworkInterface
en C# en el código anterior. El código anterior se puede utilizar para obtener cualquier tipo de dirección IP en nuestra máquina local. Por ejemplo, si queremos obtener la dirección IP de la interfaz Ethernet, tenemos que especificarla en la llamada a la función pasando 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