Fórum Capturar IP externo #272401

15/03/2005

0

Ola, preciso capturar para visualizacao o ip externo(que o provedor me fornece) como faco isso?

Tenho esta funcao mas pega o IP interno:

function GetLocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := ´´;
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;


Obrigado


Estanieski

Estanieski

Responder

Post mais votado

15/03/2005

E esta o interno e externo
uses
  Winsock;

{...}

function getIPs: Tstrings;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of Char;
  I: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := TstringList.Create;
  Result.Clear;
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  I    := 0;
  while pPtr^[I] <> nil do
  begin
    Result.Add(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;

//==Chame assim

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines := GetIps;
end;


Sanses


Sanses

Sanses
Responder

Gostei + 2

Mais Posts

26/01/2016

Cristiano

Boa tarde raetardehttps://www.devmedia.com.br/forum/perfil/sanses/234688
mas estou usando seu codigo no delphi xe8 e esta dando erro na linha que tem a palavra Buffer, gostaria de saber se tenho que declarar algo na Uses ou alguma variavel. Aguardo resposta, email: cristiano19020@gmail.com
Responder

Gostei + 0

04/08/2016

Marcelo Stefaniak

declare como abaixo:
var Buffer: pansichar;
Responder

Gostei + 0

08/12/2016

Quality Sistemas

Parabéns pelo post e para quem tiver problemas com o Buffer a correção é:
Buffer : array [0 .. 63] of Ansichar;
Responder

Gostei + 0

03/11/2017

Gladson Reis

Boa tarde ! Aguem pode me enviar este código funcionando ?
gladson @ stonestecnologia com br
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar