Как вы меняете IP-адрес в C ++? - PullRequest
2 голосов
/ 18 декабря 2008

Мне нужно сделать ряд связанных с сетью вещей в C ++, которые я обычно делал бы с ifconfig в Linux, но я бы хотел сделать это без разбора вывода группы системных вызовов. Какие библиотеки C или C ++ можно использовать, чтобы определить, работает ли сетевой адаптер или нет, прочитать или изменить IP-адрес и сетевую маску адаптера и изменить шлюз DNS по умолчанию?

Ответы [ 3 ]

4 голосов
/ 18 декабря 2008

Вы всегда можете посмотреть на исходный код ifconfig, чтобы увидеть, как они это сделали: http://archive.ubuntu.com/ubuntu/pool/main/n/net-tools/net-tools_1.60.orig.tar.gz

4 голосов
/ 18 декабря 2008

Как правило, вам нужно выполнить несколько вызовов ioctl, используя дескриптор сокета (SIOCGIFADDR, SIOCADDRT). Вы можете найти примеры программ, которые используют его в исходном коде ядра Linux, в разделе Документация / Сеть. Некоторые другие ссылки, которые могут быть полезны:

РЕДАКТИРОВАТЬ: Позвольте мне также добавить, что если вашей целью является Linux для настольных ПК, то вы можете рассмотреть возможность использования API DBUS для запроса параметров сети с помощью NetworkManager.

0 голосов
/ 22 декабря 2008

Сервис NetworkManager предоставляет API через dbus для запросов / манипулирования сетью во многих дистрибутивах в наши дни. Это может быть слишком высокий уровень для ваших целей (например, вам требуется более точное управление сетью, или dbus / NetworkManager недоступен в системе ...), но он может предоставить вам то, что вам нужно.

Ознакомьтесь с привязками dbus C ++ и NetworkManager API (извините, сейчас я не могу найти лучшую отформатированную версию, но информация есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...