A função GetLocalIP mostrada a seguir pode retornar o endereço IP do primeiro adaptador de rede ou uma lista com os endereços IP de todos os adaptadores de rede ativos.
function GetLocalIP(const ASeparator: string = ''): string; type TInAddrList = array[0..0] of PInAddr; PInAddrList = ^TInAddrList; var HostEnt: PHostEnt; InAddrList: PInAddrList; Buffer: array[0..63] of AnsiChar; I: Integer; GInitData: TWSADATA; begin Result := ''; WSAStartup($101, GInitData); try GetHostName(Buffer, SizeOf(Buffer)); HostEnt := GetHostByName(Buffer); if Assigned(HostEnt) then begin InAddrList := PInAddrList(HostEnt^.h_addr_list); I := 0; while InAddrList[I] <> nil do begin if Result <> '' then Result := Result + ','; Result := Result + StrPas(inet_ntoa(InAddrList[I]^)); if ASeparator = '' then Exit; Inc(I); end; end; finally WSACleanup; end; end;
Para testar...
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Endereço IP'#13#13 + 'Primeiro: ' + GetLocalIP + #13 + 'Todos: ' + GetLocalIP(',')); end;
O conteúdo desta página pode ajudar alguém? Compartilhe!