LINUX.ORG.RU

[C] получить список сетевых интерфейсов и привязанных к ним адресов

 


0

2

Как делается сабж? Интересуют как IPv4 так и IPv6 адреса.

Существует ли какой-нибудь переносимый способ, чтобы одинаковым способом получать сетевые адреса компьютера во всех UNIX-подобных ОС (например, FreeBSD, MacOS)?

P.S. А еще, как это можно сделать в оффтопике? :)

★★★★★

> Существует ли какой-нибудь переносимый способ, чтобы одинаковым способом получать сетевые адреса компьютера во всех UNIX-подобных ОС (например, FreeBSD, MacOS)?

Боюсь, нет. Даже просто список интерфейсов без адресов нельзя универсальным способом узнать.

const86 ★★★★★
()
#ifdef WIN32
{...}
#elif FREEBSD
{...}
#elif LINUX
{...}
#endif

Вполне переносимо и портабельно :)

Jetty ★★★★★
()
Ответ на: комментарий от const86

SIOCGIF точно работает на Linux & Mac. Была какая-то тонкость с неподнятыми интерфейсами, но уже забыл. Гляну сегодня на рыботе, если вспомню.

ratatosk
()

поищи поиском, несколько раз в год такое спрашивают. В том числе и про офтопик писали.

true_admin ★★★★★
()

man getifaddrs есть в лялексе, в openbsd и кажется добавили в соплярку. Насчёт остальных ОС не в курсе.

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

> SIOCGIF точно работает на Linux & Mac. Была какая-то тонкость с неподнятыми интерфейсами, но уже забыл.

Тонкость заключается в том, что оно возвращает список настроенных ipv4 адресов, а не список сетевых интерфейсов.

const86 ★★★★★
()

Используя netlink можно получить название интерфейсов и привязанные к ним адреса: как ipv4, так и ipv6.

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