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

最佳答案

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

  • Network Interface operations on AIX
  • XBMC's implementation( checkout CNetworkInterfaceLinux)

  • 编辑:我还要补充一点,如果您的目标是台式机Linux,则可以考虑使用DBUS API使用NetworkManager查询网络参数。
  • http://people.redhat.com/dcbw/NetworkManager/NetworkManager DBUS API.txt(很抱歉,在编辑中插入链接存在一些问题)
  • 09-10 03:45
    查看更多