// 函数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. Codeforces 855C - Helga Hufflepuff's Cup

    855C - Helga Hufflepuff's Cup 题意 要求构建一棵树,树上至多可以存在 \(x\) 个权值为 \(k\) 的重要点,且与重要点连边的点的权值必须小于 \(k\),问有多少种 ...

  2. volatile 和 Interlocked

    class Volatile_Test3 { ; public static void Test() { count = ; Task[] tasks = ]; ; i < tasks.Leng ...

  3. Windows 环境下 Redis 安装

    1.redis官方下载地址:https://redis.io/download,redis 64位下载地址:https://github.com/MicrosoftArchive/redis/rele ...

  4. 谜题12:ABC

    这个谜题要问的是一个悦耳的问题,下面的程序将打印什么呢? public class ABC{ public static void main(String[] args){ String letter ...

  5. luogu P1802 5倍经验日

    题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉.干掉能拿不少经验的. 题目描述 现在absi2011拿出了x个迷你装药物 ...

  6. [美团 CodeM 初赛 Round A]最长树链

    题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1. 思路: 暴力DP. 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度. 然后暴力转移一下,时间复杂度 ...

  7. 一个页面如何放多个百度编辑器 Ueditor 1.4.3?PHP如何获取Ueditor 的值?

    问题1:一个页面如何放置多个Ueditor? 参考代码如下: <form  method="post" action="save.php"> < ...

  8. 通俗解释遗传算法及其Matlab实现

    早上再看一个APP推荐的文章,发现的. (1)初识遗传算法 遗传算法,模拟达尔文进化论的自然选择和遗传学机理的生物进化过程的计算模型,一种选择不断选择优良个体的算法.谈到遗传,想想自然界动物遗传是怎么 ...

  9. svn的安装(整合apache、ldap)包括错误解决post commit FS processing had error

    2013年12月5日 admin 发表评论 阅读评论 以下是centos环境下,以yum安装apache及其相关软件.svn使用源码包编译,使用官网最新的1.8.5版本. 一.安装apache ope ...

  10. 一良心操盘手:我们是这样玩死散户的! z

    做庄必须考虑很多问题: 第一是证监会的监控.操控股票不能让他们抓住把柄,这时候就要考虑多户头,或者拉几个私募大户集体作战. 第二要考虑产业资本的问题.如果我们拉的时候,他们看到利润可观,结果大量抛出筹 ...