C# - Usando classes para a programação com a web (.NET Core) - IV


Hoje vamos continuar a apresentar algumas classes que facilitam a programação para web na linguagem C#.


Continuando a terceira parte do artigo vamos tratar das classes IPHostEntry e Dsn na linguagem C# na .NET Core.
 

 

A classe IPHostEntry

 

A classe IPHostEntrys fornece uma classe de contêiner para informações de endereço de host da Internet.

 

Esta classe classe associa um nome de host do sistema de nome de domínio (DNS) com um array de aliases e um array de endereços IP correspondentes sendo usada como uma classe auxiliar da classe Dns.

Principais propriedades:

AddressList Obtém ou define uma lista de endereços IP associados a um host.
Aliases Obtém ou define uma lista de aliases associados a um host.
HostName Obtém ou define o nome DNS do host.

 

A classe Dns
 

A classe Dns fornece a funcionalidade de resolução de nome de domínio simples.

 

Esta classe é uma classe estática que recupera informações sobre um host específico a partir do sisetma DNS( Sistema de nomes de domínios da Internet)

As informações do host a partir da consulta DNS são retornadas em uma instância da classe IPHostEntry. Se o host especificado tem mais de uma entrada no banco de dados DNS, a classe IPHostEntry vai conter vários endereços IP e aliases.

 

Principais métodos:

BeginGetHostAddress Retorna os endereços IP (protocolo IP) de modo assíncrono para o host especificado.
BeginGetHostByName    Inicia uma solicitação assíncrona para a informações IPHostEntry sobre o nome de host DNS especificado.
BeginGetHostEntry Resolve assincronamente um endereço IP para uma instância de IPHostEntry.
BeginResolve Inicia uma solicitação assíncrona para resolver um nome de host DNS ou endereço IP para uma instância IPAddress.
GetHostAddresses Retorna os endereços IP (Internet Protocol) para o host especificado.
GetHostbyAddress Cria uma instância de IPHostEntry do IPAddress especificado
GetHostEntry Resolve um nome do host ou endereço IP para uma instância IPHostEntry
GetHostName Obtém o nome de host do computador local
Resolve Resolve um nome do host DNS ou endereço IP para uma instância IPHostEntry

 

Vejamos a seguir alguns exemplos práticos usando estas classes.
 

Vamos criar um projeto .NET Core tipo Console no VS 2017 Community chamado NETCore_Dns.

 

Nosso primeiro exemplo vai usar o método Dns.GetHostAddresses(hostname) para retornar um array de endereços IP para um nome de host:

 

using static System.Console;
using System.Net;
using System.Threading.Tasks;
using System;
namespace NetCore_Dns
{
    class Program
    {
        static void Main(string[] args)
        {
            do
            {
                Write("Informe o nome do host:\t");
                string hostname = ReadLine();
                if (hostname.CompareTo("sair") == 0)
                {
                    WriteLine("tchau...!!");
                    return;
                }
                IPAddress[] array = Dns.GetHostAddresses(hostname);
                foreach (IPAddress ip in array)
                {
                    WriteLine(ip.ToString());
                }
            } while (true);
        }      
    }
}

 

Executando programa iremos obter:


 

O programa exibe os endereços IPs para o nome do host informado.
 

No exemplo a seguir temos uma aplicação que faz um loop para solicitar ao usuário o nome do host (você pode adicionar um endereço IP) para obter um IPHostEntry via método Dns.GetHostEntryAsync.

 

A partir do IPHostEntry, a lista de endereços é acessada usando a propriedade AddressList, exibindo no console todos os endereços do host bem como o AddressFamily:
 

No método main() do arquivo Program.cs inclua o código a seguir:

 

using static System.Console;
using System.Net;
using System.Threading.Tasks;
using System;
namespace NetCore_Dns
{
    class Program
    {
        static void Main(string[] args)
        {
            do
            {
                Write("Informe o nome do host:\t");
                string hostname = ReadLine();
                if (hostname.CompareTo("sair") == 0)
                {
                    WriteLine("tchau...!!");
                    return;
                }
                ProcurarHostAsync(hostname).Wait();
                WriteLine();
            } while (true);
        }
        public static async Task ProcurarHostAsync(string hostname)
        {
            try
            {
                IPHostEntry ipHost = await Dns.GetHostEntryAsync(hostname);
                WriteLine($"Nome do Host : {ipHost.HostName}");
                foreach (IPAddress address in ipHost.AddressList)
                {
                    WriteLine($"Família de Endereços : {address.AddressFamily}");
                    WriteLine($"Endereço: {address}");
                }
            }
            catch (Exception ex)
            {
                WriteLine(ex.Message);
            }
        }
    }
}

 

Às vezes, é útil ter o endereço IP numérico em vez de confiar no nome do host, entretanto para a maioria dos programas, basta usar o nome do host. (O nome do host pode ser alterado para resolver um endereço IP diferente.)

 

Executando programa iremos obter:

 

 

Na próxima parte do artigo vamos tratar dos protocolos TCP e UDP.

 

Pegue o projeto completo aqui:  NetCore_Dns.zip
 

"E esta é a mensagem que dele(Jesus) ouvimos, e vos anunciamos: que Deus é luz, e não há nele trevas nenhumas."
1 João 1:5

 

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 ?


Referências:


José Carlos Macoratti