// 函数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;

delphi中检测局域网ip能够ping通模块的更多相关文章

  1. RAC环境下SCAN IP可以PING通,1521端口也可以TELNET,但是无法建立数据库连接

    昨天用户请求帮助处理一个问题:有个厂家需要连某个业务系统的数据库,网络上已经开通了权限,SCAN IP可以PING通,测试TELNET 1521端口也是正常.但是想通过SQLPLUS连接,总是会提示连 ...

  2. centOS IP能ping通但是域名ping不通

    centOS IP能ping通但是域名ping不通, 导致了yum update 无更新. 百度了很久,最后有个方法试过解决了: iptables -X iptables -F 然后重新 yum up ...

  3. 物理机与虚拟机IP互ping通,而互ping主机名不通

    问题描述:虚拟机信息:VMware-workstation 10安装RHEL5.8操作系统.hostname:rhel201.com IP:192.168.1.201 物理机系统:windows 7主 ...

  4. 为虚机Linux系统设置静态IP,ping通外网并解决相关问题

    在虚机中安装完Linux系统后,虚机是ping不通外网的,而默认的动态IP会为之后的Hadoop应用造成不少麻烦,为了减少这些不必要的麻烦,我们把系统的IP设置为静态. 步骤: 修改系统配置文件 命令 ...

  5. VCenter中嵌套openstack VM不能ping通外部网络问题解决的方法

    问题描写叙述: 近期搭建了vCenter环境,并使用vCenter创建的VM搭建了一套openstack环境.在验证openstack的外网功能时.发现报文死活ping不通外网,抓包发现报文在vcen ...

  6. openstack环境下的虚拟机通过浮动IP访问后能ping通外网IP不能ping通域名

    1.环境简介 openstack环境下构造Ubuntu系统的VM,VM配置受管子网和自管子网,同时绑定浮动IP 2.通过浮动IP访问VM后,ping www.baidu.com失败,但是通过IP地址p ...

  7. VMware中虚拟机与主机不能ping通解决办法

    先去看看服务全部启动了没? VMware相关服务启动关闭脚本     启动了还报错,接着往下看......     一.如果是桥接模式,那么 可能性1:虚拟机防火墙禁ping,请关闭虚拟机防火墙重试: ...

  8. Ping ip能ping通,ping计算机名ping不通,网络共享不能访问

    名称 协议 端口 NetBIOS Name Service UDP 137 NetBIOS Datagram Service UDP 138 NetBIOS Session Service TCP 1 ...

  9. 局域网电脑禁止ping通的解决方法

    方法1:命令行模式进入服务器后 点击 开始——运行 输入命令:netsh firewall set icmpsetting 8这样就可以在外部ping到服务器了 非常简单实用!同样道理,如果想禁止Pi ...

随机推荐

  1. STL之search

    描述 使用STL中的search函数,判断一个序列是否是另一个序列的子序列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { vector<int> ...

  2. 《深入理解Spark-核心思想与源码分析》(二)第二章Spark设计理念和基本架构

    若夫乘天地之正,而御六气之辩解,以游无穷者,彼且恶乎待哉? ——<庄子.逍遥游> 翻译:至于遵循宇宙万物的规律,把握“六气”的变化,遨游于无穷无尽的境域,他还仰赖什么呢! 2.1 初始Sp ...

  3. Java高级架构师(一)第15节:带查询的分页、修改和删除页面

    @RequestMapping(value="toList",method=RequestMethod.GET) public String toList(@ModelAttrib ...

  4. 个人python学习路线记录

    一.入门视频 零基础入门学习Python --小甲鱼 二.博客园 python快速教程 http://www.cnblogs.com/vamei/archive/2012/09/13/2682778. ...

  5. MJExtension使用指导(转)

    MJExtension使用指导(转)  MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --& ...

  6. iOS消息传递机制

    每个应用或多或少都由一些需要相互传递消息的对象结合起来以完成任务.在这篇文章里,我们将介绍所有可用的消息传递机制,并通过例子来介绍怎样在苹果的框架里使用.我们还会选择一些最佳范例来介绍什么时候该用什么 ...

  7. 利用Cain+wireshark进行协议分析

    Cain抓包指南 1.简介: 在开发测试工作中经常有捕抓设备间通信报文的需求,但有时候被抓包的设备并不直接和进行抓包的主机或设备进行通信,因此会达不到想要的效果.解决该问题的常见方法有: (1).为被 ...

  8. Inno Setup入门(一)——最简单的安装脚本

    地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...

  9. iOS:GitHub上值得关注的iOS开源项目

    1.AFNetworking地址:https://github.com/AFNetworking/AFNetworking用于网络请求 2.JSONKit地址:https://github.com/j ...

  10. Install FileZilla in Ubuntu16.04

    一.安装fileZilla $ sudo add-apt-repository ppa:n-muench/programs-ppa $ sudo apt-get update $ sudo apt-g ...