delphi中检测局域网ip能够ping通模块
// 函数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;
最新文章
- [BI项目记]-TFS Express备份和恢复
- 由ArcMap属性字段自增引出字段计算器使用Python的技巧
- JavaScript基础------入门基础
- gspx请求周期(备忘)
- python多线程使用
- python 中 input 和 raw_input 的区别
- Android之图片颜色调节
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
- c++中类模版中的static数据成员的定义
- (原创)(C#随笔)IEnumerable<; ICollection <; IList区别
- 百度地图API新手入门
- Latex appendix 生成附录A和B
- 嫁给程序员的好处,你get到了吗?
- 9. Fizz Buzz 问题
- 记使用talend从oracle抽取数据时,数字变为0的问题
- 查看Linux内置命令和外部命令
- Maven包下载不下来的情况
- Log4j 日志记录
- mac下 python3 安装--有说明原电脑安装的文件在哪里
- ssh设置无密码登录
热门文章
- sed 概述
- shell head tail
- Mysql数据库的安装及配置
- [CF935F]Fafa and Array
- python3 开发面试题(常用模块以及第三方库)6.5
- 【R笔记】R语言利器之ddply
- javascript设计模式 第一章 灵活的javascript
- 【jQuery】jquery中 使用$(&#39;#parentUid&#39;).attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read property &#39;nodeType&#39; of undefined
- 【报错】引入jar包import org.apache.commons.codec.digest.DigestUtils 报错,jar不存在
- python 列表合并