2011-01-24 71 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