如何枚舉計算機上當前可用的所有網絡接口(包括虛擬,非連接,環回等)?如何枚舉所有可用的網絡接口?
我需要知道他們的IP4/6,掩碼,網關,DNS,WINS等
語言: C++,WinAPI的
系統: Windows 2000及更高版本(包括Win7的)
如何枚舉計算機上當前可用的所有網絡接口(包括虛擬,非連接,環回等)?如何枚舉所有可用的網絡接口?
我需要知道他們的IP4/6,掩碼,網關,DNS,WINS等
語言: C++,WinAPI的
系統: Windows 2000及更高版本(包括Win7的)
看一看http://www.codeproject.com/KB/IP/netcfg.aspx。這是你想要做的一個巨大的例子。
@bmarguliesm,你聯網的真正大師!萬分感謝。 – Andrew 2011-03-06 22:03:37
我意識到這是一個老_really_答案,但有您可以編輯任何機會,以配合SO的新的質量標準? (即不是鏈接) – 2017-02-19 07:35:15
我無權訪問窗口。隨意做到這一點。 – bmargulies 2017-02-19 15:07:51
這聽起來像你想要幾個不同的功能的組合。
要獲得帶有IPv4地址/掩碼的適配器列表,關聯的WINS服務器和DNS服務器,可以使用GetAdaptersInfo
。要獲得IPv6地址,您可以使用GetAdaptersAddresses
。
根據「等」中包含的內容,您可能還需要GetIfTable
和GetIfEntry
。 GetIfTable
獲取網絡適配器的列表。 GetIfEntry
獲取有關每個人的信息。這些檢索的東西就像通過特定接口傳輸/檢索的數據量。還有一個GetIfTable2
/GetIfEntry2
只適用於Vista和更新,獲取更多信息。
如果內存服務,GetIfTable
/GetIfEntry
列表全部機器中的接口。 GetAdaptersInfo
只適用於「真實」適配器。
+1謝謝,傑瑞。我將與你的建議延長@bmargulies的解決方案 – Andrew 2011-03-06 22:34:46
事與願違,你可以使用getaddrinfo ("..localmachine")
枚舉在Windows 2003+接口。
http://msdn.microsoft.com/en-us/library/ms738520(v=vs.85).aspx
Windows 7的帶有Service Pack 1(SP1)和Windows Server 2008 R2的Service Pack 1(SP1)的支持添加到隱藏的接口。
這有沒有upvotes了嗎?所有的最優雅的解決方案!謝謝! – eckes 2014-11-26 08:58:36
考慮這個問題:http://stackoverflow.com/questions/3069082/porting-getifaddrs-to-win-xp – 2011-03-08 06:38:29