Внешняя компонента для тех, кто не хочет использовать для пинга программу ping.exe или WMI. С помощью компоненты можно проверить доступность соединения с хостом в сети по протоколу ICMP.
Преимущества:
- Не требуется наличие программы ping.exe;
- Не требуется наличие COM-объектов;
- Не требуется наличие прав администратора;
- Удобно работать с результатом выполнения;
Недостатки:
- Нет поддержки IPv6;
- Нет поддержки Linux;
- Возможно еще куча др. недостатков о которых я не подумал...
Для работы компоненты требуется библиотека ICMP.DLL, которая присутствует по умолчанию в любой ОС Windows начиная с XP и выше. Компонента тестировалась на Windows 10, платформа 1С версии 8.3.10.2650 (x86). На 64-х разрядных платформах работа не тестировалась.
Внешняя компонента написана по технологии Native API, имеет всего 1 метод и 1 свойство.
Методы:
1. Ping | ЭхоЗапрос(<Адрес>, <РазмерПакет>, <Таймаут>, <КодОшибки>, <IPАдресХоста>) - Выполняет эхо-запрос на указанный адрес;
Параметры:
<Адрес> - Тип Строка. Адрес куда нужно послать пинг в виде имени или IP-адреса (IPv4). IPv6 не поддерживается.
<РазмерПакета> - Тип Число. Размер посылаемого пакета в байтах. Параметр не обязательный, значение по умолчанию 32.
<Таймаут> - Тип Число. Таймаут это-запроса в миллисекундах. Параметр не обязательный, значение по умолчанию 5000.
<КодОшибки> - Тип Число. Параметр не обязательный, в качестве параметра должна передаваться переменная в которую будет помещен код ошибки, в случае возникновения ошибки при отправке эхо-запроса.
Возможные коды ошибок:
0 = "Success"
11001 = "Buffer Too Small"
11002 = "Destination Net Unreachable"
11003 = "Destination Host Unreachable"
11004 = "Destination Protocol Unreachable"
11005 = "Destination Port Unreachable"
11006 = "No Resources"
11007 = "Bad Option"
11008 = "Hardware Error"
11009 = "Packet Too Big"
11010 = "Request Timed Out"
11011 = "Bad Request"
11012 = "Bad Route"
11013 = "TimeToLive Expired Transit"
11014 = "TimeToLive Expired Reassembly"
11015 = "Parameter Problem"
11016 = "Source Quench"
11017 = "Option Too Big"
11018 = "Bad Destination"
11032 = "Negotiating IPSEC"
11050 = "General Failure"
<IPАдресХоста> - Тип Строка. Параметр не обязательный, в качестве параметра должна передаваться переменная в которую будет помещен IP-адрес (IPv4) отвечающего хоста. Таким образом можно узнать IP-адрес по имени хоста переданного в параметре <Адрес>.
Возвращаемое значение: Тип Число. Время между эхо-запросом и эхо-ответом в миллисекундах. В случае возникновения ошибки возвращаемое значение равно -1.
Свойства:
1. Version | Версия - Тип Строка. Содержит версию компоненты в виде строки. Данное свойство доступно только для чтения. Текущая версия 1.0.
В качестве примера представлена обработка для обычного приложения с внешней компонентой. Пример можно без проблем адаптировать под управляемое приложение, на работе компоненты это никак на скажется.