// 函数PingHost用于ping目标IP是否连通 // uses winsock    在uses中加入  winsock // 用法:  if PingHost(edit2.Text) then  edit1.Text:='已连接' else edit1.Text:='未连接' ; function TfrmQYinfo.PingHost(HostIP: string): boolean; type   PIPOptionInformation = ^TIPOptionInformation;   TIPOptionInformation = packed record     TTL: Byte;     TOS: Byte;     Flags: Byte;     OptionsSize: Byte;     OptionsData: pchar;   end;

PIcmpEchoReply = ^TIcmpEchoReply;   TIcmpEchoReply = packed record     Address: DWORD;     Status: DWORD;     RTT: DWORD;     DataSize: WORD;     Reserved: WORD;     Data: Pointer;     Options: TIPOptionInformation;   end;   TIcmpCreateFile = function: THandle; stdcall;   TIcmpCloseHandle = function(IcmpHandle: THandle): boolean; stdcall;   TIcmpSendEcho = function(IcmpHandle: THandle;     DestinationAddress: DWORD;     RequestData: Pointer;     RequestSize: WORD;     RequestOptions: PIPOptionInformation;     ReplyBuffer: Pointer;     ReplySize: DWORD;     Timeout: DWORD     ): DWORD; stdcall; var   hICMP: THandle;   hICMPdll: THandle;   IcmpCreateFile: TIcmpCreateFile;   IcmpCloseHandle: TIcmpCloseHandle;   IcmpSendEcho: TIcmpSendEcho;   pIPE: PIcmpEchoReply; //   ICMP   Echo   reply   buffer   FIPAddress: DWORD;   FSize: DWORD;   FTimeOut: DWORD;   BufferSize: DWORD;   pReqData, pRevData: pchar;   MyString: string; begin   result := false;   hICMPdll := LoadLibrary('icmp.dll');   if hICMPdll = 0 then Exit;   @IcmpCreateFile := GetProcAddress(hICMPdll, 'IcmpCreateFile');   @IcmpCloseHandle := GetProcAddress(hICMPdll, 'IcmpCloseHandle');   @IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho');

hICMP := IcmpCreateFile;

if (hICMP = INVALID_HANDLE_VALUE) then Exit;

//如果提示下面这句话不正确的话,是因为在uses中没有加入winsock   FIPAddress := inet_addr(pchar(HostIP)); //delphi2010改为 :  inet_addr(PANSIChar(ansistring(HostIP)));   MyString := 'Hello'; //send   data   buffer   pReqData := pchar(MyString);

FSize := 40; //receive   data   buffer   BufferSize := SizeOf(TIcmpEchoReply) + FSize;   GetMem(pIPE, BufferSize);   FillChar(pIPE^, SizeOf(pIPE^), 0);   GetMem(pRevData, FSize);   pIPE^.Data := pRevData;   FTimeOut := 50; //超时时间,毫秒   try     result := IcmpSendEcho(hICMP, FIPAddress, pReqData,       Length(MyString), nil, pIPE, BufferSize, FTimeOut) > 0;   finally     IcmpCloseHandle(hICMP);     FreeLibrary(hICMPdll);     FreeMem(pRevData);     FreeMem(pIPE);   end; end;

最新文章

  1. [BI项目记]-TFS Express备份和恢复
  2. 由ArcMap属性字段自增引出字段计算器使用Python的技巧
  3. JavaScript基础------入门基础
  4. gspx请求周期(备忘)
  5. python多线程使用
  6. python 中 input 和 raw_input 的区别
  7. Android之图片颜色调节
  8. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
  9. c++中类模版中的static数据成员的定义
  10. (原创)(C#随笔)IEnumerable< ICollection < IList区别
  11. 百度地图API新手入门
  12. Latex appendix 生成附录A和B
  13. 嫁给程序员的好处,你get到了吗?
  14. 9. Fizz Buzz 问题
  15. 记使用talend从oracle抽取数据时,数字变为0的问题
  16. 查看Linux内置命令和外部命令
  17. Maven包下载不下来的情况
  18. Log4j 日志记录
  19. mac下 python3 安装--有说明原电脑安装的文件在哪里
  20. ssh设置无密码登录

热门文章

  1. sed 概述
  2. shell head tail
  3. Mysql数据库的安装及配置
  4. [CF935F]Fafa and Array
  5. python3 开发面试题(常用模块以及第三方库)6.5
  6. 【R笔记】R语言利器之ddply
  7. javascript设计模式 第一章 灵活的javascript
  8. 【jQuery】jquery中 使用$('#parentUid').attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read property 'nodeType' of undefined
  9. 【报错】引入jar包import org.apache.commons.codec.digest.DigestUtils 报错,jar不存在
  10. python 列表合并