2008-12-18 183 views
3

我需要在C++中做一些与网络有关的事情,我通常会在Linux中使用ifconfig,但是我想在不解析一组系统调用的输出的情况下执行此操作。可以使用哪些C或C++库来判断网络适配器是启动还是关闭,读取或更改适配器的IP地址和网络掩码,并更改默认的DNS网关?如何在C++中更改IP地址?

回答

4

基本上,您需要使用套接字句柄(SIOCGIFADDR,SIOCADDRT)进行一堆ioctl调用。您可以在Documentation/networking下找到在Linux内核源代码中使用它的示例程序。其他一些链接,可能会有所帮助:

编辑:我还要补充一点,如果你的目标是桌面Linux,那么你可以考虑使用DBUS API使用NetworkManager查询网络参数。

+0

谢谢。我最终使用了ioctl,通过您提供的第一个链接了解了这一点。 – 2008-12-19 21:28:54

+0

文档/网络下究竟要读什么? – 2017-09-08 14:48:52

0

NetworkManager服务公开了一个API,通过dbus来查询/操纵当今许多发行版的网络。这可能对您而言过于高级(例如,您需要对网络进行更好的控制,或者dbus/NetworkManager在系统上不可用),但它可能会为您提供所需的功能。

检查出dbus C++ bindingsNetworkManager API(对不起,我现在找不到更好的格式化版本,但信息在那里)。