Мы уже говорили, что под сетевым интерфейсом понимают сетевой адаптер—устройство, которое подключает компьютер к сети и определяет способы передачи данных между узлами сети. Класс NetworkInterface инкапсулирует данные о сетевых интерфейсах локального компьютера. Для получения информации вам не надо создавать объект класса NetworkInterface, просто воспользуйтесь его статическим методом GetAllNetworkInterfaces и получите массив ссылок на объекты класса NetworkInterface, каждый из которых содержит информацию о конкретном сетевом адаптере компьютера. Логика этого приема должна быть вам знакома.
foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
{
// Работаем с объектом adapter
}
Каждый объект (adapter) содержит информацию о конфигурации сетевого интерфейса и статистику его использования. Рассмотрим, как отобразить эту информацию. Для того, чтобы увидеть самые простые свойства используемых адаптеров, добавьте в конец метода Main такой фрагмент.
Console.WriteLine("\nTest Adapters" + line.Substring(0, 14) + "\n\n");
foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
{
IPInterfaceProperties ip = adapter.GetIPProperties();
string name = adapter.Description;
Console.WriteLine (name + line.Substring(0, name.Length + 1) +
"\n\n{0,-28}: {1:x}\n{2,-28}: {3:x}\n{4,-28}: {5:x}",
" DNS suffix", ip.DnsSuffix,
" DNS enabled", ip.IsDnsEnabled,
" Dynamically configured", ip.IsDynamicDnsEnabled);
}
Для каждого из протоколов есть класс, содержащий общие сведения о конфигурации адаптера. Например, класс IPv4InterfaceProperties содержит такие свойства:
¨ IsAutomaticPrivateAddressingActive указывает, поддерживается-ли автоматическое присвоение адресов (Automatic Private IP addressing—APIPA). Эта настройка позволяет автоматически получить адрес (в диапазоне от 169.254.0.0 до 169.254.255.255) для тех компьютеров, которые не имеют доступа к службе DHCP (Dynamic Host Configuration Protocol).
¨ Mtu (Maximum Transmission Unit) сетевого интерфейса—это максимальный размер пакета, который может быть передан с его помощью. Его принято измерять в октетах (синоним байтам), для TCP/IP он равен 1500.
¨ Свойство IsForwardingEnabled показывает, может-ли интерфейс изменять маршрут (route) пакетов.
¨ Свойство UsesWins показывает, используется-ли служба WINS, работающая с распределенной базой данных регистрации и опроса динамических NetBIOS-имен, отображаемых в IPv4-адреса.
Рассмотрим, как использовать класс IPv4InterfaceProperties для вывода указанных свойств. Вставьте внутрь цикла прохода по всем адаптерам (в конец тела цикла foreach) следующий фрагмент кода.
if (!adapter.Supports(NetworkInterfaceComponent.IPv4))
break;
IPv4InterfaceProperties ip4 = ip.GetIPv4Properties();
if (ip4 == null)
{
Console.WriteLine("No IPv4 information is available for this interface");
break;
}
Console.WriteLine("{0,-28}: {1}\n{2,-28}: {3}\n{4,-28}: {5}\n" +
"{6,-28}: {7}\n{8,-28}: {9}\n{10,-28}: {11}\n",
" Index", ip4.Index, " MTU", ip4.Mtu,
" APIPA active", ip4.IsAutomaticPrivateAddressingActive,
" APIPA enabled", ip4.IsAutomaticPrivateAddressingEnabled,
" Forwarding enabled", ip4.IsForwardingEnabled,
" Uses WINS", ip4.UsesWins);
Следует различать два типа статистической информации. Для каждого из двух протоколов (IPv4 и IPv6) можно получить глобальную статистику IP-соединения, поддерживаемую классом IPGlobalStatistics и детальную статистику локального компьютера, поддерживаемую классами IcmpV4Statistics и IcmpV6Statistics. В первом случае надо использовать методы: GetIPv4GlobalStatistics и GetIPv6GlobalStatistics класса IPGlobalStatistics, во втором—множество свойств двух Icmp*-классов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.