Чтение онлайн

на главную - закладки

Жанры

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

Ватсон Карли

Шрифт:

 Address.Port = int.Parse(textBoxPort.Text);

 Address.Scheme = Uri.UriSchemeHttp;

 Address.Path = textBoxFile.Text;

 Uri AddressUri = Address.Uri;

 Process myProcess = new Process;

 myProcess.StartInfo.FileName = "iexplorer.exe";

 textBoxURI.Text = AddressUri.ToString;

 myProcess.StartInfo.Arguments = AddressUri.ToString;

 myProcess.Start;

}

Адреса IP

и имена DNS

Серверы в Интернете, так же, как и клиенты, идентифицируются адресами IP или по именам хостов (называемых также именами DNS). Обычно имя хоста, такое как

www.wrox.com
или
www.microsoft.com
, является понятным для пользователя и вводится в окне браузера Web. Адрес IP, с другой стороны, является идентификатором, который компьютеры используют для идентификации друг друга, и реально используется для обеспечения того, чтобы запросы и ответы Web направлялись на соответствующие машины.

Адрес IP является просто 32-битовым целым числом, которое обычно представляют в так называемом десятичном формате с точками как набор из четырех чисел — каждое между 0 и 255. Компьютер может иметь даже более одного адреса IP. Например, IP 100.100.100.31 при общении с другими компьютерами в Интернете через модем и адрес 10.0.0.1 при общении через свою сетевую карту с другими компьютерами в локальной сети. Следовательно, если другие компьютеры в локальной сети хотят послать сообщение этому компьютеру, они должны обращаться по адресу 10.0.0.1, в то время как компьютеры в Интернете должны обращаться к нему по адресу 100.100.100.31. Адреса обычно динамически присваиваются компьютеру каждый раз либо при загрузке (для компьютеров с постоянным соединением с интранет), либо при установлении связи (для компьютеров, соединенных с провайдером Интернета через модем или аналогичное устройство). Динамически присваиваемые адреса IP передаются компьютеру по мере необходимости из пула адресов, поддерживаемых его провайдером Интернета.

Люди редко вводят адреса IP непосредственно, а используют более понятные имена DNS, такие как

www.wrox.com
. Поэтому необходимо при отправке сетевого запроса сначала транслировать имя DNS в адрес IP, что выполняет один из нескольких серверов DNS.

Это организовано следующим образом: некая машина, соединенная с локальным компьютером (что означает либо выделенную машину в локальной сети, либо при модемном соединении машину в корпоративной сети, с которой происходит соединение), будет определена сервером DNS. Эта машина хранит огромную таблицу, отображающую имена DNS в адреса IP для всех известных ему компьютеров, и также содержит адреса IP других серверов DNS, имеющие возможность найти адреса, о которых она не знает. Каждый сетевой компьютер должен знать адрес IP по крайней мере одного локального сервера DNS (это один из элементов данных, которые необходимо предоставить при настройке сетевой конфигурации на компьютере). Когда посылается запрос, компьютер сначала запрашивает сервер DNS, чтобы он сообщил адрес IP, соответствующий введенному адресу домена. Затем, с помощью правильного адреса IP, направляется запрос. Обычно это происходит неявно и поэтому прозрачно, например при перемещении в Интернете.

Классы .NET для адресов IP

.NET предоставляет ряд классов, которые могут помочь в процессе поиска адресов IP и при получении информации о компьютерах-хостах.

IPAddress

Класс

IPAddress
представляет адрес IP, который доступен как свойство
Address
и может быть преобразован в десятичный формат с точками с помощью
ToString
.
IPAddress
реализует также статический метод
Parse
, эффективно выполняя обратное преобразование в
ToString
— из десятичной строки с точками в (целочисленный) адрес IP.

IPAddress ipAddress = IPAddress.Parse("234.56.78.9");

int address = ipAddress.Address; // address
будет присвоено 37105130

string ipString = ipAddress.ToString; // ipString будет присвоен

// текст "234.45.54.2"

IPAddress
предоставляет также ряд константных статических полей, которые возвращают известные специальные адреса IP, имеющие специальные значения.

//следующая строка задает обратную петлю как "127.0.0.1"

// адрес обратной петли указывает локальный хост

string loopback = IPAddress.Loopback.ToString;

// следующая строка задает адрес широковещания как "255.255.255.255"

// адрес широковещания используется для отправки сообщения

// всем машинам в локальной сети

String broadcast = IPAddress.Broadcast.ToString;

IPHostEntry

Класс

IPHostEntry
инкапсулирует информацию, связанную с определенным хостом (компьютером). Он делает доступным имя хоста с помощью свойства
HostName
(которое возвращает строку) и все адреса IP с помощью свойства
AddressList
, которое возвращает массив объектов
IPAddress
. Класс
IPHostEntry
будет показан в действии в примере
DNSResolver
ниже.

DNS

Класс

DNS
является классом, который может общаться с используемым по умолчанию сервером DNS, чтобы извлечь адреса IP. Двумя важными (статическими) методами здесь являются
Resolve
, использующий сервер DNS для получения данных хоста с заданным именем хоста, и
GetHostByAddress
, который также посылает назад эти данные, но в этот раз с помощью адреса. Оба метода возвращают объект
IPHostEntry
.

HostEntry wroxHost = Dns.Resolve("www.microsoft.com");

HostEntry wroxHostCopy = Dns.GetHostByAddress("234.234.234.234");

В этом коде оба объекта

HostEntry
будут содержать данные серверов Microsoft.com.

Класс

Dns
отличается от классов
IPAddress
и
IPHostEntry
тем, что инкапсулирует возможность реально общаться с серверами для получения информации. Классы
IPAddress
и
IPHostEntry
, напротив, мало чем отличаются от структур данных, которые имеют подходящие свойства, позволяющие получить доступ к содержащимся в них данным.

Пример: DnsLookup

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

DnsLookup
в действии.

Пример просто предлагает пользователю ввести имя DNS в основное текстовое поле. Когда пользователь нажимает кнопку

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

Поделиться:
Популярные книги

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

Соль этого лета

Рам Янка
1. Самбисты
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Соль этого лета

Неудержимый. Книга XVIII

Боярский Андрей
18. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVIII

Мама из другого мира. Чужих детей не бывает

Рыжая Ехидна
Королевский приют имени графа Тадеуса Оберона
Фантастика:
фэнтези
8.79
рейтинг книги
Мама из другого мира. Чужих детей не бывает

Город Богов

Парсиев Дмитрий
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Город Богов

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Предопределение

Осадчук Алексей Витальевич
9. Последняя жизнь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Предопределение

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Барон ненавидит правила

Ренгач Евгений
8. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон ненавидит правила

Шайтан Иван 2

Тен Эдуард
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Шайтан Иван 2

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша