Fórum Delphi Pegar IP Local #596081
07/08/2018
0
Olá, quero pegar o IP Local de um determinado PC
Para fazer isso montei a seguinte funçao:
Ela funciona bem, desde que na maquina só exista um IP Local disponivel
Por exemplo, na minha maquina eu tenho o Virtual Box instalado.
o Virtual Box criou um adaptador de rede e disponibilizou um novo IP local: 192.168.56.1
.
Quando executo a minha funcao ela retorna o ip do virtualbox
Porem eu preciso do ip do adaptador de rede fisico ao qual eu desejo conectar a minha aplicacao.
.
Alguém poderia dizer para desinstalar o virtual box, seria uma soluçao,
porém no cliente pode haver algo semelhante, ou até duas placas de rede instalada
(caso cada placa possa ter um IP diferente, na mesma maquina, o que acredito que seja verdade, nao tive como testar aqui)
.
Entao precisaria pegar o endereço IP Local do adaptador de rede específico.
Tentei fuçar nas propriedades desse componente que uso na funcao acima, mas nao encontrei nada.
.
Alguem saberia como fazer?
Para fazer isso montei a seguinte funçao:
Function IPLocal( PC:String ):String;
var IP:TIdIPWatch; Host: TIdStackWindows;
begin
Host := TIdStackWindows.Create;
try
Result := Host.ResolveHost( PC );
Finally
Host.Free;
end;
End;
Ela funciona bem, desde que na maquina só exista um IP Local disponivel
Por exemplo, na minha maquina eu tenho o Virtual Box instalado.
o Virtual Box criou um adaptador de rede e disponibilizou um novo IP local: 192.168.56.1
.
Quando executo a minha funcao ela retorna o ip do virtualbox
Porem eu preciso do ip do adaptador de rede fisico ao qual eu desejo conectar a minha aplicacao.
.
Alguém poderia dizer para desinstalar o virtual box, seria uma soluçao,
porém no cliente pode haver algo semelhante, ou até duas placas de rede instalada
(caso cada placa possa ter um IP diferente, na mesma maquina, o que acredito que seja verdade, nao tive como testar aqui)
.
Entao precisaria pegar o endereço IP Local do adaptador de rede específico.
Tentei fuçar nas propriedades desse componente que uso na funcao acima, mas nao encontrei nada.
.
Alguem saberia como fazer?
Alberto
Curtir tópico
+ 0
Responder
Posts
10/08/2018
Ermesom Lourenco
Meu caro, não sei se ajuda mas utilizo esta função para buscar o mac do pc que consegue pegar a lista de todos os macs da máquina. Recomendo procurar para ver se alguma das propriedades há a informação do IP:
function TFormPrincipal.getMacsNew: TStrings;
var
i: Integer;
NumInterfaces: Cardinal;
AdapterInfo: array of TIpAdapterInfo;
OutBufLen: ULONG;
mac: string;
begin
GetNumberOfInterfaces(NumInterfaces);
SetLength(AdapterInfo, NumInterfaces);
OutBufLen := NumInterfaces * SizeOf(TIpAdapterInfo);
GetAdaptersInfo(@AdapterInfo[0], OutBufLen);
Result := TStringList.Create;
for i := 0 to NumInterfaces - 1 do begin
mac := Format('%.2x:%.2x:%.2x:%.2x:%.2x:%.2x',
[AdapterInfo[i].Address[0], AdapterInfo[i].Address[1],
AdapterInfo[i].Address[2], AdapterInfo[i].Address[3],
AdapterInfo[i].Address[4], AdapterInfo[i].Address[5]]);
if mac <> '00:00:00:00:00:00' then
Result.Add(mac)
else
Break;
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)