Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Создание мониторинга

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 26.12.2013, 17:37   #1
 Разведчик
Аватар для vim.adm
 
vim.adm никому не известный тип
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Question Создание мониторинга

Добрый день!

Пришла идея в офисе установить программку на сервере, которая бы контролировала включение клиентских ПК.
Алгоритм:
- Бросаем пинг на каждый ip если пинг проходит удачно (3 пакета из 3) записываем время включения.
В офисе сеть построена на рабочей группе.

Вопрос: как организовать команду ping?
Желательно примерчик программки или кода (работоспособного) команды пинг

Использую Delphi XE 4

Последний раз редактировалось vim.adm; 26.12.2013 в 17:41.
  Ответить с цитированием
Старый 05.01.2014, 11:34   #2
 Разведчик
Аватар для vim.adm
 
vim.adm никому не известный тип
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создание мониторинга

Задача решена, тема не актуальна.
кидаю кусок кода отвечающий за пинг
Цитата:
type
ip_option_information = packed record // Информация заголовка IP (Наполнение
// этой структуры и формат полей описан в RFC791.
Ttl : byte; // Время жизни (используется traceroute-ом)
Tos : byte; // Тип обслуживания, обычно 0
Flags : byte; // Флаги заголовка IP, обычно 0
OptionsSize : byte; // Размер данных в заголовке, обычно 0, максимум 40
OptionsData : Pointer; // Указатель на данные
end;

icmp_echo_reply = packed record
Address : u_long; // Адрес отвечающего
Status : u_long; // IP_STATUS (см. ниже)
RTTime : u_long; // Время между эхо-запросом и эхо-ответом
// в миллисекундах
DataSize : u_short; // Размер возвращенных данных
Reserved : u_short; // Зарезервировано
Data : Pointer; // Указатель на возвращенные данные
Options : ip_option_information; // Информация из заголовка IP
end;

PIPINFO = ^ip_option_information;
PVOID = Pointer;

function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL' name 'IcmpCloseHandle';
function IcmpSendEcho(
IcmpHandle : THandle; // handle, возвращенный IcmpCreateFile()
DestAddress : u_long; // Адрес получателя (в сетевом порядке)
RequestData : PVOID; // Указатель на посылаемые данные
RequestSize : Word; // Размер посылаемых данных
RequestOptns : PIPINFO; // Указатель на посылаемую структуру
// ip_option_information (может быть nil)
ReplyBuffer : PVOID; // Указатель на буфер, содержащий ответы.
ReplySize : DWORD; // Размер буфера ответов
Timeout : DWORD // Время ожидания ответа в миллисекундах
) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';


implementation

procedure TForm1.ip022Timer(Sender: TObject);
var
hIP : THandle;
pingBuffer : array [0..31] of Char;
pIpe : ^icmp_echo_reply;
pHostEn : PHostEnt;
wVersionRequested : WORD;
lwsaData : WSAData;
error : DWORD;
destAddress : In_Addr;
begin
try
// Создаем handle
hIP := IcmpCreateFile();

GetMem( pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer));
pIpe.Data := @pingBuffer;
pIpe.DataSize := sizeof(pingBuffer);

wVersionRequested := MakeWord(1,1);
error := WSAStartup(wVersionRequested,lwsaData);
if (error <> 0) then
begin
Exit;
end;

pHostEn := gethostbyname('192.168.0.22');
error := GetLastError();
if (error <> 0) then
begin
if Label12.Caption='Доступен' then
begin
Label12.Caption:='Недоступен';
UniQuery4.SQL.Clear;
UniQuery4.SQL.Add('Insert INTO Status Value (''Зубарева Светлана Барисовна'',''192.168.0.22'','''+Label1.Caption+'' ','''+Label4.Caption+''',''Выключен'',''-'');');
UniQuery4.Active:=True;
end;
Exit;
end;

destAddress := PInAddr(pHostEn^.h_addr_list^)^;
IcmpSendEcho(hIP,
destAddress.S_addr,
@pingBuffer,
sizeof(pingBuffer),
Nil,
pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer),
100);

error := GetLastError();
if (error <> 0) then
begin
{ошибка или пинг не идет}
if Label12.Caption='Доступен' then
begin
Label12.Caption:='Недоступен';
UniQuery4.SQL.Clear;
UniQuery4.SQL.Add('Insert INTO Status Value (''Зубарева Светлана Барисовна'',''192.168.0.22'','''+Label1.Caption+'' ','''+Label4.Caption+''',''Выключен'',''-'');');
UniQuery4.Active:=True;
end;
Exit;
end;
{пинг прошел}
//pIpe.RTTime - показывает пинг
if Label12.Caption='Недоступен' then
begin
Label12.Caption:='Доступен';
UniQuery4.SQL.Clear;
UniQuery4.SQL.Add('Insert INTO Status Value (''Зубарева Светлана Барисовна'',''192.168.0.22'','''+Label1.Caption+'' ','''+Label4.Caption+''',''Включен'','''+IntToStr( pIpe.RTTime)+''');');
UniQuery4.Active:=True;
end;
IcmpCloseHandle(hIP);
WSACleanup();
FreeMem(pIpe);
except
end;
end;

  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Программу для мониторинга CS серверов Xap Другие игры 0 12.05.2012 10:11
Программа для мониторинга CPU, GPU, RAM, HDD, FPS в играх energiee Треп 0 15.04.2012 17:20
[Информация] Движок Мониторинга NEW ShaQPwNz Counter-Strike 2 08.02.2012 09:19
Парсер мониторинга кс серверов On1yFan Общение и обсуждение Counter-Strike 1 11.07.2011 17:43
[Информация] Как брать IP сервера с мониторинга. ШtepSeLb Читы и хаки для CS 3 18.03.2011 15:34

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 07:02.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net