Get IP...

13/01/2004

0

Alguem poderia me passar um Link ou a Funcao para obter o IP da minha
rede?
Eu uso a Funcao GetIp,mas quando estou conectado na Net,ela me retorna p IP do servidor.
Preciso que retorne o IP local de minha maquina (192.168.20.0 etc).
Obrigado a quem me ajudar


Kroki

Kroki

Responder

Posts

14/01/2004

Kroki

Se não respoderam porque não sabiam,achei a resposta:function LocalIP : 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
begin
Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;


Responder

14/01/2004

Zumbi

eu fiz essa para mim usar em meus programas se ajudar fique a vontade....

// Retorna o IP de sua máquina no momento em que
// você está conectado

function GetIP:string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
Name:string;
begin
WSAStartup(2, WSAData);
SetLength(Name, 255);
Gethostname(PChar(Name), 255);
SetLength(Name, StrLen(PChar(Name)));
HostEnt := gethostbyname(PChar(Name));
with HostEnt^ do
begin
Result := Format(´¬d.¬d.¬d.¬d´,[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;

//
// Declare a Winsock na clausula uses da unit
//


Responder

12/07/2021

Wellington Telles

No Delphi 10.3, tive que mudar Buffer para AnsiChar e na hora de fechar o programa de EAccessViolation, ainda em busca de uma solução.
O segundo código foi copiado e tinha uma parte antes.
Responder

13/07/2021

Emerson Nascimento

tente assim:
function GetIP: string;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  Name: PAnsiChar;
begin
  WSAStartup(2, WSAData);
  Name := AllocMem(255);
  GetHostName(Name, 255);
  HostEnt := GetHostByName(Name);
  with HostEnt^ do
    Result := Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
  WSACleanup;
end;
Responder

13/07/2021

Emerson Nascimento

necessário adicionar Winapi.WinSock na cláusula uses.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar