C# - Usando classes para a programação com a web (.NET Core) - III
Hoje vamos apresentar algumas classes que facilitam a programação para web na linguagem C#. |
Continuando a segunda parte do artigo vamos tratar da classe
IPAddress da
linguagem C# na .NET Core.
A classe IPAddress
A classe IPAddress fornece um endereço IP.
O endereço em si esta disponível como um array de bytes através da propriedade GetAddressBytes e pode ser convertido em um formato decimal pontuando usando o método ToString.
Esta classe também implementa os métodos estáticos Parse e TryParse que realiza a conversão inversa de ToString, ou seja, convertendo de uma string decimal pontuada para um IPAddress.
Principais propriedades:
Address | API obsoleta |
AddressFamily | Obtém a família de endereços do endereço IP. |
IsIPv4MappedToIPv6 | Determina se o endereço IP é um endereço IPv6 mapeado por IPv4. |
IsIPv6LinkLocal | Determina se o endereço é um endereço local do link IPv6. |
IsIPv6MultiCast | Determina se o endereço é um endereço global multicast IPv6. |
IsIPv6SiteLocal | Determina se o endereço é um endereço local de site IPv6. |
IsIPv6Teredo | Determina se o endereço é um endereço IPv6 Teredo. |
IsScoped | Obtém ou define o identificador de escopo de endereço IPv6. |
Principais métodos:
GetAddressBytes | Fornece uma cópia do IPAddress como um array de bytes. |
HostToNetworkOrder | Converte um valor de ordem de byte de host em ordem de byte de rede. |
IsLoopBack | Indica se o endereço IP especificado é o endereço de loopback. |
MapToIPv4 | Mapeia o objeto IPAddress para um endereço IPv4. |
MapToIPv6 | Mapeia o objeto IPAddress para um endereço IPv6. |
NetworkToHostOrder | Converte um número de ordem de byte de rede em ordem de byte de host |
Parse | Converte uma cadeia de caracteres de endereços IP em uma instância IPAddress . |
TryParse | Determina se uma cadeia de caracteres é um endereço IP válido. |
Vejamos a seguir alguns exemplos práticos usando esta classe.
Vamos começar validando um endereço IP.
Vamos criar um projeto .NET Core tipo Console no VS 2017 Community chamado NETCore_IPAdress.
No método main() do arquivo Program.cs inclua o código a seguir:
static void Main(string[] args)
{
IPAddress IP;
bool flag = false;
WriteLine("Informe o endereço IP: ");
string enderecoIP = ReadLine();
try
{
flag = IPAddress.TryParse(enderecoIP, out IP);
if (flag)
WriteLine($"{enderecoIP} é um endereço IP válido");
else
WriteLine($"{enderecoIP} Não é um endereço IP Válido");
}
catch (Exception ex)
{
throw new Exception("Erro : " + ex.Message);
}
ReadLine();
}
|
Neste código um objeto IP é criado a partir da classe IPAddress.
A seguir o endereço IP é obtido da entrada do usuário e é validado usando o método TryParse().
Este método valida se uma string é um endereço IP válido ou não.
Executando programa iremos obter:
Para obter o endereço IP a partir do hostname podemos usar o seguinte código:
static void Main(string[] args)
{
ObtemEnderecoIP();
ReadLine();
}
private static void ObtemEnderecoIP()
{
try
{
WriteLine("Endereço IP Local : " + GetIPAddress(Dns.GetHostName()));
WriteLine("Endereço IP do Google:" + GetIPAddress("google.com"));
WriteLine("Endereço IP da Microsoft:" + GetIPAddress("microsoft.com"));
WriteLine("Endereço IP do portal Macoratti.net:" + GetIPAddress("macoratti.net"));
ReadLine();
}
catch (Exception ex)
{
WriteLine("Erro : " + ex.Message);
}
}
public static IPAddress GetIPAddress(string hostName)
{
Ping ping = new Ping();
try
{
var replay = ping.Send(hostName);
if (replay.Status == IPStatus.Success)
{
return replay.Address;
}
return null;
}
catch (Exception ex)
{
throw ex;
}
}
|
O resultado obtido é mostrado na figura abaixo:
Vejamos a seguir um exemplo que acessa a propriedade AddressFamily e converte um endereço IPv4 em IPv6 e vice-versa e que também mostra como criar endereços especiais (loopback e broadcast)
No arquivo Program.cs
vamos definir dois métodos :
1- Converter IPv4 para IPv6
public static void IPAddressConversao(string ipAddressString)
{
IPAddress address;
if (!IPAddress.TryParse(ipAddressString, out address))
{
WriteLine($"Não foi possível analisar : {ipAddressString}");
return;
}
byte[] bytes = address.GetAddressBytes();
for (int i = 0; i < bytes.Length; i++)
{
WriteLine($"byte {i}: {bytes[i]:X}");
}
WriteLine($"familia : {address.AddressFamily}, " + $"mapeia para ipv6: {address.MapToIPv6()},
mapeia para ipv4: {address.MapToIPv4()}");
}
|
2- Criar endereços
public static void IPAddressCriaEnderecos(string ipAddressString)
{
WriteLine($"Criando endereços IP a partir de : {ipAddressString}\n");
WriteLine($"IPv4 endereço loopback: {IPAddress.Loopback}");
WriteLine($"IPv6 endereço loopback: {IPAddress.IPv6Loopback}");
WriteLine($"IPv4 broadcast address: {IPAddress.Broadcast}");
WriteLine($"IPv4 qualquer endereço: {IPAddress.Any}");
WriteLine($"IPv6 qualquer endereço: {IPAddress.IPv6Any}");
}
|
Com um endereço de loopback,
o hardware de rede é ignorado. Este é o endereço IP que representa o
nome do host localhost.
O endereço de broadcast é um endereço que endereça
todos os nós de uma rede local. Esse endereço não esta
disponível com IPv6, pois esse conceito não é usado com a versão mais recente do
Internet Protocol.
Depois da definição inicial do IPv4, o multicast foi adicionado para o IPv6. Com
o multicast, um grupo de nós é
endereçada em vez de todos os nós. Com o IPv6, o multicast substitui
completamente a transmissão.
No método Main() defina o código :
static void Main(string[] args)
{
WriteLine("Usando IPAdress\n");
WriteLine("Convertendo IPv4/IPv6\n");
string enderecoIP = "65.52.128.33";
IPAddressConversao(enderecoIP);
ReadLine();
WriteLine("Criando endereços\n");
IPAddressCriaEnderecos(enderecoIP);
ReadLine();
}
|
Executando o projeto teremos o resultado abaixo:
Na próxima parte do artigo vamos tratar da
classe Dns e IPHostEntry.
Pegue o projeto completo aqui:
NetCore_IPAdress.zip
Ninguém jamais viu a Deus; o Deus unigênito
(Jesus), que está no seio do Pai, é quem o revelou.
João
1:17,18
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
NET Core ou .NET Framework - Macoratti
NET Core - Padrão Repositório - Macoratti
NET Core - Sua primeira aplicação Console Application - Macoratti
NET Core 3.0 e Visual Studio 2019 - Macoratti