Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.196.59] |
|
Сообщ.
#1
,
|
|
|
Добрый день! В сетевом программировании я можно сказать новичок, и поэтому прошу вашей помощи. Требуется создать программку, которая будет отображать информацию о сетевых устройствах (компьютерах айпи-телефонах) по заранее заданным айпи адресам. Если простым языком, то имеется порядка десяти устройств со статическими айпи-адресами. Требуется программа, которая будет отображать в сети данный айпи адрес или же нет.
Предпологается, что будет выглядеть так: имеется таблица с айпи-адресами (которые можно добавлять или удалять), и напротив айпи-адреса статус устройства (включен\выключен). Перечитал кучу форумов, литературы, мануалов. Пересмотрел кучу роликов и примеров, но так ничего и не понял что это такое и с чем это едят. Прошу Вашей помощи в реализации проекта. |
Сообщ.
#2
,
|
|
|
Ищи реализацию ping на delphi
А вообще мне кажется ты изобретаешь велосипед. Добавлено Кстати такой уже есть бесплатный софт: http://www.nirsoft.net/utils/multiple_ping_tool.html |
Сообщ.
#3
,
|
|
|
Оно то и понятно, что подобные решения давно существуют. Про Ping уже думал и пытался реализовать на нем, но проблема в длительном ожидании ответа даже одного айпи-адреса. А опрашивать сразу несколько.... Советуют многопоточность использовать.
|
Сообщ.
#4
,
|
|
|
Цитата Century27 @ проблема в длительном ожидании ответа даже одного айпи-адреса у тебя сеть локальная? пинг должен за 1 МС проходить. До гугла у меня 6 МС. Так что про долго быть не должно. Для 10-ти устройств раз в 10 секунд по порядку пинговать можно и без многопоточности |
Сообщ.
#5
,
|
|
|
И все же, можно поподробнее, если можно даже с примерчиком.
Хочу понять хотя бы начало, а дальше как говориться больше |
Сообщ.
#6
,
|
|
|
Мне хотя бы разобраться как преобразовать полученное значение от Ping в "активен\выключен".
И как быть в случае если адрес недоступен прога подвисает на некоторое время и не переходит к пингованию следующего адреса |
Сообщ.
#7
,
|
|
|
CreateProcess('ping.exe ya.ru'), вернет ProcessHandle
По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. По желанию - запускать несколько процессов одновременно. Это наиболее быстрый и простой в реализации для новичка в сетях способ. |
Сообщ.
#8
,
|
|
|
Цитата Fr0sT @ CreateProcess('ping.exe ya.ru'), вернет ProcessHandle По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. А вот с этого места поподробнее, если не затруднит |
Сообщ.
#9
,
|
|
|
Цитата Fr0sT @ CreateProcess('ping.exe ya.ru'), вернет ProcessHandle По таймеру проверять ExitCode: 0 - ОК, <>0 - ошибка. Всё. гениально |
Сообщ.
#10
,
|
|
|
Цитата Century27 @ А вот с этого места поподробнее, если не затруднит Что там подробнее-то? Функции CreateProcess и GetExitCodeProcess, открыть MSDN и читать. Ну или лениво гуглить готовые примеры. |
Сообщ.
#11
,
|
|
|
Тут пример с объяснениями:
http://www.cyberforum.ru/delphi-beginners/thread548891.html |
Сообщ.
#12
,
|
|
|
вы помоему изобретаете велосипед!, если сеть локальная (все устройства в пределах физической сети до маршрутизатора), то ping вообще не нужен! достаточно послать запрос уровня L2 (ARP) и ловить ответ.
в *nix системах давно для данных целей есть утилита arp-scan нечто подобное сделали и под windows. https://github.com/QbsuranAlang/arp-scan-wi...p-scan/arp-scan код на си, но очень легко перевести на паскаль, ибо чистый api а можно использовать как законченную утилиту, ваши нужды перекроет с лихвой, умеет сканировать по списку взятому из файла. PS и да ping часто может быть отключен/запрещен/прикрыт файрволом, а вот от arp не скроется никто. |
Сообщ.
#13
,
|
|
|
Цитата Virtuals @ очень легко перевести на паскаль, ибо чистый api Да уж чище некуда #pragma comment(lib, "iphlpapi.lib") |