Get IP...

Delphi

13/01/2004

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

Curtidas 0

Respostas

Kroki

Kroki

13/01/2004

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;


GOSTEI 0
Zumbi

Zumbi

13/01/2004

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
//


GOSTEI 0
Wellington Telles

Wellington Telles

13/01/2004

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.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/01/2004

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;
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/01/2004

necessário adicionar Winapi.WinSock na cláusula uses.
GOSTEI 0
POSTAR