Получение IP-адреса по имени хоста и наоборот

      Для реализации процесса получения IP-адреса по имени хоста необходимо воспользоваться пространством имен «System.Net», которое предоставляет простой программный интерфейс для многих протоколов, используемых в современных сетях. Пространства имен «System.Net» содержат классы, обеспечивающие простой интерфейс программирования для различных сетевых протоколов, определяющие политики кэширования веб-ресурсов, а также порядок создания и отправки сообщений электронной почты, представляющие заголовки MIME, обеспечивающие доступ к данным о трафике и сетевых адресах, а также доступ к функции одноранговых сетей. Дополнительные дочерние пространства имен обеспечивают управляемую реализацию интерфейса Windows Sockets (Winsock) и доступ к сетевым потокам для защиты обмена данными между узлами.
Дополнительную информацию по данному пространству имен вы можете получить по следующему адресу: https://msdn.microsoft.com.
      В пространстве имен «System.Net» присутствует класс «DNS» с методом «GetHostAddresses», данный метод запрашивает у DNS-сервера IP-адреса, связанные с именем узла. Если «hostNameOrAddress» является IP-адресом, этот адрес возвращается без запроса DNS-сервера. Если в качестве имени узла передается пустая строка, этот метод возвращает IPv4-адреса локального узла для всех операционных систем, кроме Windows Server 2003; при использовании ОС Windows Server 2003 возвращаются и IPv4- и IPv6-адреса локального компьютера.
      В следующем примере кода показано использование метода «GetHostAddresses», для получения IP-адреса по имени хоста.

System.Net.IPAddress[] ips;

ips = System.Net.Dns.GetHostAddresses(textBox1.Text);

foreach (System.Net.IPAddress ip in ips)
{
    textBox2.Text = ip.ToString();
}
      Если вы хотите выполнить обратную процедуру, то можете воспользоваться методом «GetHostEntry», из этого же класса. Метод запрашивает у DNS-сервера IP-адреса и псевдонимы, связанные с IP-адресом и возвращает экземпляр «IPHostEntry», содержащий сведения об адресе. Данный экземпляр содержит три параметра:
  • «AddressList» - список IP-адресов, связанных с узлом.
  • «Aliases» - список псевдонимов, связанных с узлом.
  • «HostName» - DNS-имя узла.
      Свойство «HostName» содержит главное имя узла сервера. Если DNS-запись сервера определяет дополнительные псевдонимы, они будут доступны в свойстве «Aliases». Если не удается найти имя узла, возвращается исключение «SocketException» со значением «110001» (ошибка сокета Windows WSAHOST_NOT_FOUND). Так же это исключение может быть возвращено, если DNS-сервер не будет отвечать или если имя не является официальным именем или псевдонимом, или же это исключение невозможно найти в запрашиваемой базе данных.
      В следующем примере кода показано использование метода «GetHostEntry», для получения имени хоста по IP-адресу.

System.Net.IPAddress addr = System.Net.IPAddress.Parse(textBox1.Text);
System.Net.IPHostEntry entry = System.Net.Dns.GetHostEntry(addr);
textBox2.Text = entry.HostName;

Ссылка для скачивания примера: Яндекс.Диск


Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!