linux узнать свой IP

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

linux узнать свой IP

Сообщение Attid » 22.04.2007 19:21:56

linux узнать свой IP если несколько сетевых интерфейсов то все.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение serg_iv » 22.04.2007 20:04:28

serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: linux узнать свой IP

Сообщение Yogrik » 05.05.2007 19:35:57

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.
Yogrik
постоялец
 
Сообщения: 116
Зарегистрирован: 23.03.2006 00:41:48

Сообщение Attid » 05.05.2007 22:30:09

Yogrik
о погоняю, после выходных.

но все же интересно что я не правельно с FpPipe сделал что ничего не получаю. =(
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru