Get IP...
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
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
Curtidas 0
Respostas
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;
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
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
//
// 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
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.
O segundo código foi copiado e tinha uma parte antes.
GOSTEI 0
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
13/01/2004
necessário adicionar Winapi.WinSock na cláusula uses.
GOSTEI 0