2012-02-28 61 views
0

我需要以便攜方式獲取機器的路由表。我使用C++,如果有幫助,Boost庫已經可用。在C++中獲取路由表的便攜方式

沒有像「路由」那樣調用外部命令,因爲這不是可移植的,並且外部命令可能不可用。

+4

一個「路由表」的概念是不可移植。你能具體說明你感興趣的操作系統嗎? – 2012-02-28 17:32:38

+0

按照網絡,子網掩碼,網關和接口的路由表信息。 操作系統= Windows XP及以上版本,Linux 2.4及以上版本,OS X,Android。這些是主要的。 另外對於Linux我不能假定/ proc實際上是掛載或可用,因爲它可能被關閉。 – rbeede 2012-02-28 20:56:17

回答

4

肯定呼叫route是不可取的,因爲分叉和執行幾乎不是這樣。

不幸的是,我可以告訴你[作爲Net-SNMP項目的創始人,我們在C中報告許多平臺的路線],因此沒有平臺獨立的方式。您需要了解每個人如何存儲其信息以及訪問方式。 EG在Linux中,你可以從/ proc獲取它。在其他操作系統中,您可以通過API調用來獲取它。你不可能很高興地發現你想要的東西不存在。然後,您甚至會發現IPv4和IPv6之間可能有所不同的平臺!

但是,您可以隨意使用Net-SNMP代碼,並查找其中所做的所有操作。初學者請參閱agent/mibgroup/ip-forward-mib/data_access/agent/mibgroup/mibII/var_route.c