Delphi获取本机IP的函数,在Delphi11.3 /12 编译通过
function GetLocalIP(var IpList:TStringList):Integer;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
HostName: array [0..MAX_PATH] of AnsiChar;
NameLen: Integer;
WSData: TWSAData;
lpHostEnt: PHostEnt;
I: Integer;
pptr: PaPInAddr;
begin
Result := 0;
if WSAStartup(MakeWord(2,0), WSData) <> 0 then Exit;
try
NameLen := sizeof(HostName);
fillchar(HostName, NameLen, 0);
NameLen := GetHostName(HostName, NameLen);
if NameLen = SOCKET_ERROR then Exit;
lpHostEnt := GetHostByName(HostName);
if lpHostEnt = Nil then Exit;
I := 0;
pPtr := PaPInAddr(lpHostEnt^.h_addr_list);
IpList.Clear;
while pPtr^[I] <> nil do
begin
IpList.ADD( inet_ntoa(pptr^[I]^));
Inc(I);
end;
Result := IpList.Count;
finally
WSACleanup;
end;
end;