Obtenha o endereço IP local em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Obtenha o endereço IP local com a função Dns.GetHostEntry() em C#
  2. Obtenha o endereço IP local com a propriedade Socket.LocalEndPoint em C#
  3. Obtenha o endereço IP local com Linq em C#
  4. Obtenha o endereço IP local com a classe NetworkInterface em C#
Obtenha o endereço IP local em C#

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.

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

Artigo relacionado - Csharp Network