LINUX.ORG.RU

Ответ на: комментарий от Bauron

Но ток почему-то получается только loopback адрес (127.0.0.1) Может ошибочка где? #include<netdb.h> #include<netinet/in.h> main() { char name[100]; int len; struct hostent *HostEnt; struct in_addr in; gethostname(name,100); printf("%s\n",name); HostEnt = gethostbyname(name); if(HostEnt == NULL){ printf("%s\n","Gethostbyname error"); exit(1); } in.s_addr = *HostEnt->h_addr_list[0]; printf("%s\n",inet_ntoa(in)); return(0); }

anonymous
()

Мобыть, распотрошить ifup?

CybOrc
()

ну во-первых возвращается массив из имен, соответственно 127.0.0.1 можно пропустить можно опросить все сетевые интерфейсы при помощи ioctl(..,SOICGIFCONF,...)

Z0termaNN
()
Ответ на: комментарий от Z0termaNN

Ну мужики, не может чтоб так сложно было! Bauron классно предложил - 2 функции и все. Только вот не работает почему-то :-(

anonymous
()

а чего тут сложного - gethostbyname лезет в resolver, nis и пр.
ioctl - выдает адреса сетевых интерфейсов

Z0termaNN
()

//Это на Delphi переводить на C облом function LocalIPS:TStrings; type TaPInAddr = Array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: Array[0..63] of Char; I: Integer; GInitData: TWSAData; bufIps:Tstrings; begin bufIps:=TStringList.Create;//список IP адресов bufIps.Clear; 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 BufIps.Add(inet_ntoa(pptr^[I]^)); Inc(I); end; LocalIps:=BufIps; end;

anonymous
()
12 октября 2001 г.

Ребята, чё голову морочить? Вроде просто winipcfg.exe? Я ошибаюсь?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.