Книга: C# для профессионалов. Том II

Пример: DnsLookup

Пример: DnsLookup

Связанные с DNS и IP классы будут проиллюстрированы с помощью примера, который ищет имена DNS. Этот снимок экрана показывает DnsLookup в действии.


Пример просто предлагает пользователю ввести имя DNS в основное текстовое поле. Когда пользователь нажимает кнопку Resolve, пример использует метод Dns.Resolve() для извлечения ссылки IPHostEntry и выводит имя хоста и адреса IP. Отметим, что выведенное имя хоста может в некоторых случаях отличаться от введенного имени. Это происходит, если одно имя DNS (www.microsoft.com) действует просто как прокси для другого имени DNS (www.microsoft.akadns.net).

Приложение DnsLookup является стандартным оконным приложением C# с элементами управления, как показано на снимке экрана, и присвоенными им соответственно именами textBoxInput, buttonResolve, textBoxHostName и listboxIPs. Затем в класс Form1 добавляется следующий метод заданием его в окне свойств Visual Studio.NET в качестве обработчика событий для нажатия кнопки buttonResolve.

void OnResolve(object sender, EventArgs e) {
 try {
  IPHostEntry iphost = Dns.Resolve(textBoxInput.Text);
  foreach(IPAddress ip in iphost.AddressList) {
   int ipaddress = ip.Address;
   listBoxIPs.Items.Add(ipaddress);
   listBoxIPs.Items.Add(" " + Dns.IpToString(ipaddress));
  }
  textBoxHostName.Text = iphost.HostName;
 } catch(Exception ex) {
  MessageBox.Show("Unable to process the request because " +
   "the following problem occurred:n" + ex.Message,
   "Exception occurred");
 }
}

Отметим, что в этом коде перехватываются все исключения — исключение может легко возникать, если пользователь вводит что-то, что не является именем DNS, или если сеть выключена.

После извлечения экземпляра IPHostEntry используется свойство AddressList для получения массива, содержащего адреса IP, которые затем перечисляются в цикле foreach. Каждый адрес выводится как целое число и как строка использованием статического метода Dns.IpToString(), который делает то же самое, что и экземпляр метода IPAddress.ToString().

Оглавление книги

Оглавление статьи/книги

Генерация: 1.550. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз