Ja sam probao na dva načina, i uvek sam adresu dobijao samo kada je kabl povezan.
Primer za prvi način je sledeći:
Code:
program IPHelper;
{$APPTYPE CONSOLE}
uses
SysUtils, WinSock, JclSysInfo;
var
sHost, sIP: String;
nIP: Integer;
begin
try
sHost := GetLocalComputerName;
sIP := GetIPAddress(sHost);
nIP := inet_addr(PAnsiChar(sIP));
Writeln('HostName: ', sHost);
Writeln('IP address (string): ', sIP);
Writeln('IP address (longint): ', nIP);
Writeln('IP address components: ', (nIP and $000000FF), ', ', (nIP and $0000FF00) shr 8, ', ', (nIP and $00FF0000) shr 16, ', ', (nIP and $FF000000) shr 24);
Readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
program IPHelper;
{$APPTYPE CONSOLE}
uses
SysUtils, WinSock, JclSysInfo;
var
sHost, sIP: String;
nIP: Integer;
begin
try
sHost := GetLocalComputerName;
sIP := GetIPAddress(sHost);
nIP := inet_addr(PAnsiChar(sIP));
Writeln('HostName: ', sHost);
Writeln('IP address (string): ', sIP);
Writeln('IP address (longint): ', nIP);
Writeln('IP address components: ', (nIP and $000000FF), ', ', (nIP and $0000FF00) shr 8, ', ', (nIP and $00FF0000) shr 16, ', ', (nIP and $FF000000) shr 24);
Readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
Drugi način je pomoću Indy komponente TIdIPWatch, ali i ona, u slučaju kada je kabl otkačen, vraća 127.0.0.1 (localhost).
Dakle, meni treba ona (fiksna) adresa koja je dodeljena na (default) LAN adapteru. Da li se to negde pamti u sistemu (i gde), i dali postoji neka API funkcija koja to može da mi vrati?
Unapred hvala.
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams