// 函数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. 训练指南 UVALive - 3523 (双联通分量 + 二分图染色)

    layout: post title: 训练指南 UVALive - 3523 (双联通分量 + 二分图染色) author: "luowentaoaa" catalog: tru ...

  2. [Codeforces 8D] Two Friends

    Brief Introduction: 有两人a.b,他们都在A点,a经过B点到C点,而b直接到C点.a走过的距离不超过la,b走过距离不超过lb,询问他们可能经过最长的公共距离. Algorithm ...

  3. BZOJ 1112 [POI2008]砖块Klo(可持久化线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1112 [题目大意] 给出一个数列,对于一个操作,你可以对一个数+1,或者一个数-1, ...

  4. 开启关闭Centos的自动更新(转)

    开启关闭Centos的自动更新 关闭Centos的自动更新,操作记录如下: [root@jwbdb alpha]# chkconfig –list yum-updatesd yum-updatesd  ...

  5. Radius报文解析(转)

    RADIUS ,是远程认证拨号用户服务的简称.RADIUS原先设计的目的是为拨号用户进行认证和计费.后来经过多次改进,形成了一项通用的认证计费协议,主要完成在网络接入设备和认证服务器之间承载认证.授权 ...

  6. iOS开发-设置在使用NavigateController时View的顶部位置

      最近我在开发中遇到了一个问题,在使用NavigationController时内部的ViewController的View总是与屏幕顶部对齐,而我们有时候不需要这种效果: 在开发过程中,我们可能会 ...

  7. iOS开发技巧——关闭Autoresizing开启Autolayout

    在使用Autolayout时有时候会有莫名其妙的错误,是因为UIView是默认同时开启Autoresizing和Autolayout的. 但我们的Autolayout很容易和Autoresizing冲 ...

  8. pdf.js 添加自定义loading动画

    最近做了个手机端pdf预览的功能,用到pdf.js这个库,效果还不错.但是在网络差.文件大时,页面一直空白,体验不是很好. 于是加了个loading动画. <div id="loadi ...

  9. easyui datagrid加载成功之后选定并获取首行数据

    //加载成功之后,选定并获取首行数据 onLoadSuccess:function(data){ alert("grid加载成功"); var rows=$('test').dat ...

  10. JavaWeb过滤器验证登录(避免未经登录进入主页)

    今天用ssh2写了个简单的系统,发现了一个问题,我这系统必须先登录成功才能进入主页,但我在浏览器里直接输入主页地址,发现也能进入,这个肯定不好,毫无安全性可言,后经查资料发现需要登录过滤器,就试了下, ...