2011-01-24 38 views
1

的接口,我如何才能获得网络接口重新连接到我的机器上的每个IP? IP包括:静态IP,动态IPC++ linux - 在C++ linux应用程序中获取IP

注:我不能使用系统调用,则getnameinfo

10X

+0

习题这个问题可以帮助你:HTTP:// stackoverflow.com/questions/212528/linux-c-get-the-ip-address-of-local-computer – 2011-01-24 11:45:38

回答

3

可以使用getifaddrs通话;但是,请注意,这只能检索每个接口一个地址。如果这还不够,请通过netlink套接字使用rtnetlink协议; libnetlink可能会使这更容易。

+3

`getifaddrs()`使用netlink实现(在Linux上)。它是正确的接口(它可以为每个接口返回多个地址 - 它们只出现在多个`struct ifaddrs`中)。 – caf 2011-01-24 12:59:27

2

这样做相当棘手,我相信你需要有root权限。您需要发出一个ioctl(类似SIOCGIFCONF),然后将返回所有接口的列表,然后你就可以发出进一步ioctl呼叫提取状态信息等

+1

根本不需要,SIOCGIFCONF也不是及时的界面。避免。 – user562374 2011-01-24 11:50:57