Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2020, 20:32   #1
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию ping серверов

помогите дописать код.

нет идеи.

нужно чтобы 2 Memo

Онлайн и Офлайн
из списка пока не знаю как

забрал ip и имя

а после раскидывал ОНЛАЙН и ОФЛАЙН перед этим пингонув

Код:
function IcmpCreateFile:THandle; stdcall; external 'iphlpapi.dll';
function IcmpCloseHandle(icmpHandle:THandle):boolean; stdcall; external 'iphlpapi.dll'
function IcmpSendEcho(IcmpHandle:THandle;DestinationAddress:In_Addr;RequestData:Pointer;
  RequestSize:Smallint;RequestOptions:pointer;ReplyBuffer:Pointer;ReplySize:DWORD;
  Timeout:DWORD):DWORD; stdcall; external 'iphlpapi.dll';

type
  TEchoReply=packed record
    Addr:in_addr;
    Status:DWORD;
    RoundTripTime:DWORD;
    //DataSize:
    //Reserved:
    //Data:pointer;
    //Options:
  end;
  PEchoReply=^TEchoReply;

function PingHost(const HostName:string;TimeoutMS:cardinal=500):boolean;
const
  rSize=$400;
var
  e:PHostEnt;
  a:PInAddr;
  h:THandle;
  d:string;
  r:array[0..rSize-1] of byte;
  i:cardinal;
begin
  //assert WSAStartup called
  e:=gethostbyname(PChar(HostName));
  if e=nil then RaiseLastOSError;
  if e.h_addrtype=AF_INET then pointer(a):=e.h_addr^ else raise Exception.Create('Name doesn''t resolve to an IPv4 address');

  d:=FormatDateTime('yyyymmddhhnnsszzz',Now);

  h:=IcmpCreateFile;
  if h=INVALID_HANDLE_VALUE then RaiseLastOSError;
  try
    i:=IcmpSendEcho(h,a^,PChar(d),Length(d),nil,@r[0],rSize,TimeoutMS);
    Result:=(i<>0) and (PEchoReply(@r[0]).Status=0);
  finally
    IcmpCloseHandle(h);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if PingHost('8.8.8.8') then  Memo2.Lines  else Memo1.Lines;
end;
Безымянный.jpg
Вложения
Тип файла: zip ping.zip (3.5 Кб, 1 просмотров)
AppData вне форума Ответить с цитированием
Старый 29.11.2020, 13:23   #2
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию

никто не знает как? или я непонятно выразился?!
AppData вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ping Sairox Общие вопросы Delphi 12 11.10.2017 12:16
[ping] unbanned Работа с сетью в Delphi 6 09.07.2013 14:06
Ping Шамиль8284 Софт 1 27.05.2013 13:28
ping на c++ маришка001 Помощь студентам 3 30.10.2011 11:51
Создание внутреннего и внешнего серверов. Создание серверов автоматизации. Ann_Sh Помощь студентам 3 09.10.2011 15:53