zoukankan      html  css  js  c++  java
  • delphi局域网Ping各主机方法及设置本地ip方法

    1. 首先引用winsock单元
    
     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:=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;
    
    true 能Ping通 否则无此主机。
    
    2. 快速设置本地ip
    
    if not pinghost(ip4) then
            begin
              winstr:='netsh  interface ip set address 本地连接 static  192.168.1.9  255.255. 255.0  192.168.1.1  1';
              WinExec(PChar(winstr),SW_HIDE);
            end;
    

      

  • 相关阅读:
    POJ-3083 Children of the Candy Corn (BFS+DFS)
    HDU-1429 胜利大逃亡(续) (BFS+状态压缩)
    【JS】408- 看一看 JavaScript 引擎是什么
    【HTTPS】407- 记住 HTTPS!
    【React】406- React Hooks异步操作二三事
    【Git】405- 分享:大牛总结的 Git 使用技巧
    【性能优化】404- 从 12.67s到1.06s 性能优化实战
    【HTTP】402- 深入理解http2.0协议,看这篇就够了!
    【Web技术】401- 在 React 中使用 Shadow DOM
    7.app和app后端的通讯
  • 原文地址:https://www.cnblogs.com/hejoy91/p/3527139.html
Copyright © 2011-2022 走看看