我需要在C++中做一些与网络有关的事情,我通常会在Linux中使用ifconfig
,但是我想在不解析一组系统调用的输出的情况下执行此操作。可以使用哪些C或C++库来判断网络适配器是启动还是关闭,读取或更改适配器的IP地址和网络掩码,并更改默认的DNS网关?如何在C++中更改IP地址?
3
A
回答
4
基本上,您需要使用套接字句柄(SIOCGIFADDR,SIOCADDRT)进行一堆ioctl调用。您可以在Documentation/networking下找到在Linux内核源代码中使用它的示例程序。其他一些链接,可能会有所帮助:
- Network Interface operations on AIX
- XBMC's implementation(看看CNetworkInterfaceLinux)
编辑:我还要补充一点,如果你的目标是桌面Linux,那么你可以考虑使用DBUS API使用NetworkManager查询网络参数。
- http://people.redhat.com/dcbw/NetworkManager/NetworkManager DBUS API.txt(对不起,有一些问题将在修改链接)
4
您可以随时看的ifconfig的源代码,看看他们如何在第一时间做到了:http://archive.ubuntu.com/ubuntu/pool/main/n/net-tools/net-tools_1.60.orig.tar.gz
0
NetworkManager服务公开了一个API,通过dbus来查询/操纵当今许多发行版的网络。这可能对您而言过于高级(例如,您需要对网络进行更好的控制,或者dbus/NetworkManager在系统上不可用),但它可能会为您提供所需的功能。
检查出dbus C++ bindings和NetworkManager API(对不起,我现在找不到更好的格式化版本,但信息在那里)。
相关问题
- 1. 在C#中更改IP地址
- 2. 如何在C#中更改公共IP地址
- 3. 如何检测IP地址更改?
- 4. 如何更改phpmyadmin MySQL的IP地址?
- 5. 如何更改UdpClient IP地址?
- 6. 如何更改eve的IP地址?
- 7. 在VB.Net中更改IP地址
- 8. 更改程序IP地址
- 9. 更改EC2实例的公共IP地址弹性IP地址
- 10. 如何在python中更改IP地址时可视化?
- 11. 在C#中相同LAN上的IP地址到MAC地址的IP地址
- 12. 如何在客户端的IP地址更改
- 13. 如何检测Android中的Wi-Fi IP地址更改
- 14. 如何检查VB.NET中的IP地址更改?
- 15. 更改OpenShift Origin VM的IP地址
- 16. 更改Team Foundation Server 2013的IP地址
- 17. CDH 5.1主机IP地址更改
- 18. Python使用WMI更改IP地址
- 19. 更改docker桥的IP地址池
- 20. 使用脚本更改solaris IP地址
- 21. 更改容器分配的IP地址
- 22. C#如何更改ip public?
- 23. NetworkChange类的本地等价物;如何在Windows中查看IP地址更改
- 24. 如何将IP地址解析为Haskell中的IP地址?
- 25. 如何从IP地址列表中查找IP地址范围
- 26. 如何用页面中的IP地址替换IP地址中的IP地址(例如“国家,地区,城市”)
- 27. C#如何欺骗WebRequest的IP地址
- 28. 如何将我的IP地址更改为给定地址并访问网站
- 29. 在C中模拟多个IP地址#
- 30. 使用maskedtextctrl在C#中的IP地址
谢谢。我最终使用了ioctl,通过您提供的第一个链接了解了这一点。 – 2008-12-19 21:28:54
文档/网络下究竟要读什么? – 2017-09-08 14:48:52