Obtenha o endereço IP local em C#
-
Obtenha o endereço IP local com a função
Dns.GetHostEntry()
emC#
-
Obtenha o endereço IP local com a propriedade
Socket.LocalEndPoint
emC#
-
Obtenha o endereço IP local com Linq em
C#
-
Obtenha o endereço IP local com a classe
NetworkInterface
emC#
Neste tutorial, discutiremos métodos para obter o endereço IP local de nossa máquina em C#.
Obtenha o endereço IP local com a função Dns.GetHostEntry()
em C#
A classe Dns
obtém a informação relativa a um host na Internet. Existem muitos métodos na classe Dns
para funcionalidade relacionada ao DNS em C#. A função Dns.GetHostEntry()
é usada para obter o endereço IP de um host.
O exemplo de código a seguir nos mostra como podemos obter o endereço IP local de nossa máquina com a função Dns.GetHostEntry()
em 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());
}
}
}
}
Resultado:
IP Address 0 : fe80::1db8 : 23a7 : 6483 : 8976 % 20 IP Address 1 : 192.168.43.239
No código acima, passamos a função Dns.GetHostName()
como um parâmetro da função Dns.GetHostEntry()
para obter o endereço IP de nossa máquina local em C#. O único problema com esse método é que ele nos fornece todos os endereços IP da máquina. Para obter o endereço IP específico, temos que escrever o seguinte código em 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());
}
}
}
}
}
Resultado:
IP Address = 192.168.43.239
No código acima, verificamos se ip.AddressFamily
era igual a AddressFamily.InterNetwork
. Esta condição verifica se o endereço IP na variável ip
é um endereço IPv4 ou não. O código acima retorna apenas o endereço IPv4 de nossa máquina. Se quisermos obter o endereço IPv6 da nossa máquina, podemos usar o atributo AddressFamily.InterNetworkV6
em vez de AddressFamily.InterNetwork
.
Obtenha o endereço IP local com a propriedade Socket.LocalEndPoint
em C#
Uma maneira mais precisa de obter o endereço IP local de nossa máquina quando há vários endereços IP é conectar um soquete UDP e, em seguida, ler seu ponto de extremidade local. A classe Socket
em C# implementa a interface de sockets Berkeley, que fornece funcionalidade para comunicação de rede. O exemplo de código a seguir nos mostra como podemos usar a propriedade Socket.LocalEndPoint
para determinar o endereço IP local de nossa máquina em 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);
}
}
}
Resultado:
IP Address = 192.168.43.239
No código acima, conectamos o Socket socket
à nossa máquina local e extraímos o endpoint local do socket
com o atributo socket.LocalEndPoint
. Usamos o atributo endPoint.Address
para obter o endereço IP do endPoint
.
Obtenha o endereço IP local com Linq em C#
A consulta integrada Linq ou linguagem fornece funcionalidade SQL em C#. Também podemos usar Linq e a função Dns.GetHostEntry()
para obter o endereço IP local de nossa máquina em C#.
O exemplo de código a seguir nos mostra como podemos usar o Linq para obter o endereço IP local de nossa máquina em 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);
}
}
}
Resultado:
192.168.43.239
No código acima, determinamos o endereço IPv4 local de nossa máquina usando Linq com a função Dns.GetHostEntry()
em C#. O resto do código é semelhante ao nosso primeiro exemplo; a única diferença é que extraímos apenas um endereço IPv4 da lista de endereços retornada pela função Dns.GetHostEntry()
.
Obtenha o endereço IP local com a classe NetworkInterface
em C#
A classe NetworkInterface
contém dados sobre as interfaces de rede em nossa máquina local e fornece estatísticas e configuração para as interfaces de rede. A função GetAllNetworkInterfaces()
na classe NetworkInterface
nos dá todas as interfaces de rede em nossa máquina local. A propriedade NetworkInterfaceType
na classe NetworkInterface
é usada para obter o tipo de interface de rede.
O exemplo de código a seguir mostra como podemos usar todas essas funções para obter o endereço IP local de nossa máquina local em 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);
}
}
}
Resultado:
IP Address = 192.168.43.239
Recuperamos o endereço WLAN IPv4 de nossa máquina local com a classe NetworkInterface
em C# no código acima. O código acima pode ser usado para obter qualquer tipo de endereço IP em nossa máquina local. Por exemplo, se quisermos obter o endereço IP da interface Ethernet, temos que especificá-lo na chamada de função 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