delphi 获取内网所有IP地址


本文整理自网络,侵删。

 

Const
MAX_ADAPTER_NAME_LENGTH        = 256;
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH     = 8;

Type
TIPAddressString = Array[0..4*4-1] of Char;
PIPAddrString = ^TIPAddrString;
TIPAddrString = Record
    Next      : PIPAddrString;
    IPAddress : TIPAddressString;
    IPMask    : TIPAddressString;
    Context   : Integer;
End;

PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = Record { IP_ADAPTER_INFO }
    Next                : PIPAdapterInfo;
    ComboIndex          : Integer;
    AdapterName         : Array[0..MAX_ADAPTER_NAME_LENGTH+3] of Char;
    Description         : Array[0..MAX_ADAPTER_DESCRIPTION_LENGTH+3] of Char;
    AddressLength       : Integer;
    Address             : Array[1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
    Index               : Integer;
    _Type               : Integer;
    DHCPEnabled         : Integer;
    CurrentIPAddress    : PIPAddrString;
    IPAddressList       : TIPAddrString;
    GatewayList         : TIPAddrString;
End;

 Function GetAdaptersInfo(AI : PIPAdapterInfo; Var BufLen : Integer) : Integer; StdCall; External 'iphlpapi.dll' Name 'GetAdaptersInfo';

function GetLocalIP():string;
  Function GetAddrString(Addr : PIPAddrString) : String;
  Begin
      Result := ''; 
      While (Addr <> nil) do Begin
        Result := Result+Addr^.IPAddress+#13;
        Addr := Addr^.Next;
      End;
  End;
var
  AI,Work : PIPAdapterInfo;
  Size    : Integer;
  Res     : Integer;
  temps   :string;
begin
 Size := 5120;
 GetMem(AI,Size);
 work:=ai;
 Res := GetAdaptersInfo(AI,Size);
 If (Res <> ERROR_SUCCESS) Then halt;
 repeat
    temps:=GetAddrString(@Work^.IPAddressList);
    if temps <> '0.0.0.0'+#13 then result:=result+temps+'/';
    work:=work^.Next ;
 until (work=nil);
 if copy(result,length(result),length(result)-1) = '/' then delete(result,length(result),length(result)-1);
end;

//showmessage(GetLocalIP);

相关阅读 >>

Delphi基于sobel算子的图像边缘检测

Delphi xe10 fdmemtable 数据保存本地和从本地加载

Delphi中的unicode转换

Delphi禁用、启用usb

Delphi 复制文件到剪贴板

Delphi xe5 android listview

dll 的静态调用实例代码

Delphi 简单播放mp3

Delphi 获取文件名不带扩展名

Delphi 中打开浏览器跳转网址链接网页的几种方法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...