IPEndPoint point = new IPEndPoint(addr, 80);
Console.WriteLine("\n{0,-20}: {1}\n{2,-20}: {3}\n{4,-20}: {5}",
"Local IP address", addr,
"Address Family", addr.AddressFamily,
"IP End Point", point);
Console.Write("Address Bytes : ");
foreach (byte b in addr.GetAddressBytes())
Console.Write(b + " | ");
Console.Write("\n\nLoopback address is ");
if (addr.Equals(IPAddress.Loopback))
Console.WriteLine("the same as local address\n");
else
Console.WriteLine("different from local address\n");
if (addr.AddressFamily.ToString() == ProtocolFamily.InterNetworkV6.ToString())
Console.WriteLine("Scope Id: " + addr.ScopeId);
}
if (IPAddress.IsLoopback(IPAddress.Loopback))
Console.WriteLine("{0,-20}: {1}", "Loopback address", IPAddress.Loopback);
else
Console.WriteLine("Error obtaining the loopback address");
short nw = (short)0x1234;
Console.WriteLine("\nTest Byte Order" + line.Substring(0, 16) +
"\n\n{0,-20}: {1:x}\n{2,-20}: {3:x}\n{4,-20}: {5:x}\n",
"Network Byte order", nw,
"Host Byte order", IPAddress.NetworkToHostOrder(nw),
"Back to Network", IPAddress.HostToNetworkOrder(IPAddress.NetworkToHostOrder(nw)));
IPAddress a;
if (IPAddress.TryParse("127.0.0.1", out a))
Console.WriteLine("\nTest TryParse" + line.Substring(0, 14) + "\n{0,-20}: {1}\n",
"Valid IP-address", a);
¨ Класс IPHostEntry ассоциирует DNS-имя (Domain Name System) хост-компьютера с массивом его альтернативных имен (aliases—псевдонимов) и массивом соответствующих им IP-адресов.
¨ Метод NetworkToHostOrder класса IPAddress выполняет ту же роль, что и функция htons в предыдущем примере—меняет порядок байтов (big-endian, little-endian).
¨ Класс IPEndPoint инкапсулирует функциональность пары (сетевой адрес, порт), он содержит те же данные, что и структура sockaddr_in в предыдущем примере.
Internet Control Message Protocol (ICMP)—это множество сообщений, используемых для получения отчетов об ошибках передачи пакетов информации. Существует два типа таких протоколов: версии 4 (IPv4) и версии 6 (IPv6). Свойство AddressFamily класса IPAddress позволяет определить используемый сервером тип протокола. Если он соответствует версии 4 (IPv4), то этому свойству соответствует строка текста: InterNetwork, если включена поддержка версии 6 (IPv6), то строка имеет вид: InterNetworkV6.
При выводе сетевого адреса автоматически срабатывает метод ToString(), который выбирает один из стандартных форматов. Если в системе установлен протокол IPv4, то сетевой адрес получает свой формат (четверка чисел, разделяемых точкой—dotted-quad notation), если установлен протокол IPv6, то используется другой формат (шестнадцатиричные числа, разделяемые двоеточием).
Мы уже говорили, что под сетевым интерфейсом понимают сетевой адаптер—устройство, которое подключает компьютер к сети и определяет способы передачи данных между узлами сети. Класс NetworkInterface инкапсулирует данные о сетевых интерфейсах локального компьютера. Для получения информации вам не надо создавать объект класса NetworkInterface, просто воспользуйтесь его статическим методом GetAllNetworkInterfaces и получите массив ссылок на объекты класса NetworkInterface, каждый из которых содержит информацию о конкретном сетевом адаптере компьютера. Логика этого приема должна быть вам знакома.
foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
{
// Работаем с объектом adapter
}
Каждый объект (adapter) содержит информацию о конфигурации сетевого интерфейса и статистику его использования. Рассмотрим, как отобразить эту информацию. Для того, чтобы увидеть самые простые свойства используемых адаптеров, добавьте в конец метода Main такой фрагмент.
Console.WriteLine("\nTest Adapters" + line.Substring(0, 14) + "\n\n");
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.