Модератор: Модераторы
Attid писал(а):linux узнать свой IP если несколько сетевых интерфейсов то все.
program ip;
{$mode objfpc}
uses Classes, SysUtils, libc;
var
i : integer;
ls : TStringList;
function getLocalIpList:TStringList;
var
listDevInfo,listDev,ipList : TStringList;
i : integer;
sfp : longint;
req : TIfreq;
begin
result := nil;
listDevInfo := TStringList.Create;
listDev := TStringList.Create;
try
listDevInfo.loadFromFile('/proc/net/dev');
for i:=2 to listDevInfo.count - 1 do
listDev.Append(Trim(LeftStr(listDevInfo[i],pos(':',listDevInfo[i])-1)));
sfp := socket(AF_INET,SOCK_DGRAM,0);
if sfp>-1 then
begin
ipList := TStringList.Create;
for i:=0 to listDev.count - 1 do
begin
req.ifr_ifrn.ifrn_name := PChar(listDev[i]);
if ioctl(sfp,SIOCGIFADDR,@req) > -1 then
ipList.Append(inet_ntoa(req.ifr_ifru.ifru_addr.sin_addr));
end;
result := ipList;
end
else
writeln('Can''t create socket');
finally
FreeAndNil(listDevInfo);
FreeAndNil(listDev);
end;
end;
begin
ls := GetLocalIpList;
if ls<>Nil then
for i:=0 to ls.count - 1 do
writeln(ls[i]);
end.
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4