Ich habe folgende Funktion zum ermitteln der Lokalen
IP Adresse ausgegraben:
Delphi-Quellcode:
function GetLocalIP: Integer;
type
PaPInAddr = ^TaPInAddr;
TaPInAddr = array[0..$FFFE] of PInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer : array[0..MAXGETHOSTSTRUCT - 1] of Char;
I: Integer;
begin
Result := -1;
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 := pptr^[I]^.S_addr;
Inc(I);
end;
end;
Ich weiß nicht genau welchen Datentyp Buffer annehmen muss damit die Funktionalität erhalten bleibt... Ich wollte aus Buffer einen PAnsiChar machen aber dann wird phe = nil durch die fehlgeschlagene GetHostByName Funktion... (Welche ja auch schon veraltet ist)