Модератор: Модераторы

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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1