DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 3
在线用户: 4
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2009/9/1 14:07:19
标题:
检测局域网ip能否够ping通 浏览:3116
加入我的收藏
楼主: 从别的坛子发现的,放这吧,万一有人能用上。

 function   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;   
    
        FIPAddress   :=   inet_addr(PChar(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   := 2000;   
        try   
          Result   :=   IcmpSendEcho(hICMP,   FIPAddress,   pReqData,   
          Length(MyString),nil,pIPE,BufferSize,FTimeOut)>0;   
        finally   
          IcmpCloseHandle(hICMP);   
          FreeLibrary(hICMPdll);   
          FreeMem(pRevData);   
          FreeMem(pIPE);   
        end;   
  end;
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2016/9/30 23:08:00
1楼: 上面代码 编译不过去,
inet_addr 找不到;
----------------------------------------------
青云论坛
作者:
男 axfx (axfx) ▲▲▲▲▲ -
普通会员
2016/10/2 20:21:05
2楼: 建议不要使用icmp.dll,在win7里面ping不通。
----------------------------------------------
超低价出售pos/进销存/收银软件源码
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.4fee645eC26dvB&ft=t&id=671027238807
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行72.26563毫秒 RSS