Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Сетевое программирование > Мониторинг Ip |
Автор: Century27 21.11.17, 08:50 |
Добрый день! В сетевом программировании я можно сказать новичок, и поэтому прошу вашей помощи. Требуется создать программку, которая будет отображать информацию о сетевых устройствах (компьютерах айпи-телефонах) по заранее заданным айпи адресам. Если простым языком, то имеется порядка десяти устройств со статическими айпи-адресами. Требуется программа, которая будет отображать в сети данный айпи адрес или же нет. Предпологается, что будет выглядеть так: имеется таблица с айпи-адресами (которые можно добавлять или удалять), и напротив айпи-адреса статус устройства (включен\выключен). Перечитал кучу форумов, литературы, мануалов. Пересмотрел кучу роликов и примеров, но так ничего и не понял что это такое и с чем это едят. Прошу Вашей помощи в реализации проекта. |
Автор: ^D^ima 21.11.17, 09:29 |
Ищи реализацию ping на delphi А вообще мне кажется ты изобретаешь велосипед. Добавлено Кстати такой уже есть бесплатный софт: http://www.nirsoft.net/utils/multiple_ping_tool.html |
Автор: Century27 21.11.17, 10:01 |
Оно то и понятно, что подобные решения давно существуют. Про Ping уже думал и пытался реализовать на нем, но проблема в длительном ожидании ответа даже одного айпи-адреса. А опрашивать сразу несколько.... Советуют многопоточность использовать. |
Автор: ^D^ima 21.11.17, 10:07 |
у тебя сеть локальная? пинг должен за 1 МС проходить. До гугла у меня 6 МС. Так что про долго быть не должно. Для 10-ти устройств раз в 10 секунд по порядку пинговать можно и без многопоточности |
Автор: Century27 21.11.17, 10:18 |
И все же, можно поподробнее, если можно даже с примерчиком. Хочу понять хотя бы начало, а дальше как говориться больше |
Автор: Century27 21.11.17, 11:29 |
Мне хотя бы разобраться как преобразовать полученное значение от Ping в "активен\выключен". И как быть в случае если адрес недоступен прога подвисает на некоторое время и не переходит к пингованию следующего адреса |
Автор: Fr0sT 21.11.17, 12:03 |
CreateProcess('ping.exe ya.ru'), вернет ProcessHandle По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. По желанию - запускать несколько процессов одновременно. Это наиболее быстрый и простой в реализации для новичка в сетях способ. |
Автор: Century27 21.11.17, 12:15 |
Цитата Fr0sT @ CreateProcess('ping.exe ya.ru'), вернет ProcessHandle По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. А вот с этого места поподробнее, если не затруднит |
Автор: ^D^ima 21.11.17, 12:55 |
Цитата Fr0sT @ CreateProcess('ping.exe ya.ru'), вернет ProcessHandle По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. гениально |
Автор: Fr0sT 22.11.17, 06:54 |
Что там подробнее-то? Функции CreateProcess и GetExitCodeProcess, открыть MSDN и читать. Ну или лениво гуглить готовые примеры. |
Автор: ^D^ima 22.11.17, 07:38 |
Тут пример с объяснениями: http://www.cyberforum.ru/delphi-beginners/thread548891.html |
Автор: Virtuals 22.11.17, 17:09 |
вы помоему изобретаете велосипед!, если сеть локальная (все устройства в пределах физической сети до маршрутизатора), то ping вообще не нужен! достаточно послать запрос уровня L2 (ARP) и ловить ответ. в *nix системах давно для данных целей есть утилита arp-scan нечто подобное сделали и под windows. https://github.com/QbsuranAlang/arp-scan-wi...p-scan/arp-scan код на си, но очень легко перевести на паскаль, ибо чистый api а можно использовать как законченную утилиту, ваши нужды перекроет с лихвой, умеет сканировать по списку взятому из файла. PS и да ping часто может быть отключен/запрещен/прикрыт файрволом, а вот от arp не скроется никто. |
Автор: Fr0sT 23.11.17, 07:59 |
Да уж чище некуда <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> #pragma comment(lib, "iphlpapi.lib") |