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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.