你如何改变C ++的IP地址?

我需要在C ++中做一些与networking有关的事情,我通常会在Linux中使用ifconfig做,但是我想这样做而不parsing一组系统调用的输出。 可以使用哪些C或C ++库来判断networking适配器是启动还是closures,读取或更改适配器的IP地址和networking掩码,并更改默认的DNS网关?

Solutions Collecting From Web of "你如何改变C ++的IP地址?"

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

  • AIX上的网络接口操作
  • XBMC的实现 (查看CNetworkInterfaceLinux)

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

您可以随时查看ifconfig的源代码,看看他们是如何做到的: http : //archive.ubuntu.com/ubuntu/pool/main/n/net-tools/net-tools_1.60.orig.tar 。广州

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

查看dbus C ++绑定和NetworkManager API (很抱歉,我现在找不到更好的格式化版本,但信息在那里)。