"Time to live", reply.Options.Ttl,
"Don't fragment", reply.Options.DontFragment,
"Buffer size", reply.Buffer.Length);
}
}
Свойство NodeType класса IPGlobalProperties позволяет определить тип сетевого узла, соответствующего локальному компьютеру. Возможные значения типов перечислены в системе NetBIOS (Network Basic Input/Output System). Следующая таблица показывает способы определения IP-адреса по его NetBIOS-имени.
Тип узла |
Способ получения IP-адреса |
Broadcast |
Используется запрос по имени NetBIOS |
Peer2Peer |
Используется одна из служб NBNS (NetBIOS Name Server), например, WINS (Windows Internet Name Service) |
Mixed |
Используется запрос по имени. В случае отказа используется одна из служб NBNS |
Hybrid |
Используется одна из служб NBNS. В случае отказа используется запрос по имени |
Unknown |
Способ не определен |
¨ Свойство NodeType имеет тип NetBiosNodeType. Это перечисление, элементы которого соответствуют типам узлов рассмотренной таблицы.
¨ Свойство DhcpScopeName задает имя группы компьютеров, объединенных в подсеть.
¨ Свойство IsWinsProxy показывает, использует-ли локальный компьютер службу WINS, работающую с распределенной базой данных регистрации и опроса динамических NetBIOS-имен, отображаемых в IP-адреса.
В нашем примере также показано, как прозвонить узел сети (трезвон—одно из значений английского слова ping). Не уверен, застал-ли читатель время, когда наличие электрического контакта между отдельными узлами цепи действительно проверяли с помощью электрического звонка (который звенит, когда контакт существует). В нашем случае термин ping означает использование утилиты ping (или класса Ping) для проверки доступности узла с заданным именем (или IP-адресом).
Проверьте работу утилиты (наберите в командной строке: ping 127.0.0.1) и сравните параметры, выводимые ею, с теми, что получены методом Send класса Ping. Получите справку по всем входным параметрам метода Send. Обратите внимание на технику работы с потоком байтов (а не Unicode символов), она необходима для передачи данных по сети. Получите информацию о параметрах конструктора класса PingOptions. Для многократного прозвона используйте цикл.
Параметр TTL (Time-to-Live)—время жизни пакета измеряется не в секундах или минутах, а в количестве узлов сети, через которое он может пройти, не исчерпав запас отведенных ему жизненных сил. Проходя через шлюз (gateway) и маршрутизатор (router), пакет, совсем как в компьютерной игре, теряет одну жизнь. Когда счетчик жизней (TTL) станет равным нулю, пакет считается недоставляемым (undeliverable) и бракуется.
Следующий фрагмент (добавьте его в конец Main) позволяет убедиться, что классы .NET Framework действительно упрощают работу с объектами сетевого программирования. Вам, вероятно, уже надоели сетевые адреса, но мы опять к ним вернемся, чтобы проиллюстрировать новые свойства классов IPAddress и IPEndPoint. Класс IPAddress имеет 4 специальных константы, которые часто используются в управлении локальными сетями:
¨ Any — представляет собой любой из IP-адресов локальной сети,
¨ Broadcast — представляет широковещательный адрес локальной сети (адрес подсети):
¨ Loopback — представляет адрес заглушки (имитации сетевой карты), используемой для отладки приложений,
¨ None — адрес, имитирующий отсутствие в системе сетевого интерфейса.
Console.WriteLine("\n\nSpecial Addresses" + line.Substring(0, 18) +
"\n\n{0,-20}: {1}\n{2,-20}: {3}\n{4,-20}: {5}\n{6,-20}: {7}",
"Broadcast address", IPAddress.Broadcast,
"None address", IPAddress.None,
"Any address", IPAddress.Any,
"Test Parse address", IPAddress.Parse("192.168.1.1"));
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress addr in host.AddressList)
{
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.