Пинг удаленного компьютера C#
При разработке сетевых приложений, которые полагаются на доступность удаленного компьютера, важно иметь возможность проверить работоспособность другой системы. Используя .Класс Ping NET framework, для этой цели может быть отправлен эхо-запрос ICMP.
Класс Ping
Класс Ping был введен в .NET framework версии 2.0, в пространстве имен System.net.NetworkInformation. Класс предоставляет функциональные возможности, необходимые для проверки, доступен ли удаленный компьютер по сети или через интернет.
Класс Ping включает два метода, которые отправляют пакет эхо-запроса протокола ICMP (Internet Control Message Protocol) и ожидают ответа. Это метод синхронной отправки и метод асинхронной отправки. В этом совете мы сосредоточимся на первом.
Метод отправки имеет несколько перегруженных версий. Самый простой из них принимает один параметр, содержащий имя или IP-адрес целевого компьютера в виде строки. Добавление целочисленного параметра позволяет указать значение тайм-аута в миллисекундах, чтобы переопределить значение по умолчанию, равное пяти секундам. Если ответ не получен в течение указанного времени, действие ping приостанавливается и сообщается о состоянии тайм-аута.
Ping ping = new Ping(); ping.Send("upread.ru"); // Пинг с таймаутом по умолчанию ping.Send("upread.ru", 10000); // Тайм-аут в десять секундКласс PingReply
Метод отправки класса Ping возвращает экземпляр класса PingReply. Возвращаемый объект предоставляет несколько свойств, два из которых важны для определения доступности удаленного компьютера. Свойство Status содержит общий результат операции ping. Если для этого значения перечисления установлено значение "Успешно", удаленный компьютер доступен. Если статус имеет любое другое значение, то проверка связи завершилась неудачно, что указывает на то, что целевая система может быть недоступна или блокировать эхо-запросы с помощью брандмауэра.
Если операция ping прошла успешно, производительность ссылки можно проверить, изучив свойство RoundtripTime объекта PingReply. Это свойство представляет собой целое значение, которое содержит продолжительность операции в миллисекундах.
В следующем примере проверяется метод Ping.Send локального компьютера. Операция должна быть почти мгновенной, следовательно, время в оба конца должно составлять ноль миллисекунд.
Ping ping = new Ping(); PingReply reply = ping.Send("localhost"); Console.WriteLine(reply.Status); // Выведет "Success" Console.WriteLine(reply.RoundtripTime); // Выведет "0ms"Класс IPAddress
Когда вашей программе нужно только выполнить пинг с использованием IP-адресов, класс IPAddress в пространстве имен System.Net можно использовать вместо строки. Этот класс предназначен только для хранения действительных IP-адресов.
byte[] ip = new byte[] { 127, 0, 0, 1 }; IPAddress ipAddress = new IPAddress(ip); Ping ping = new Ping(); PingReply reply = ping.Send(ipAddress); Console.WriteLine(reply.Status); // выведет "Success" Console.WriteLine(reply.RoundtripTime); // выведет "0ms"
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.