我需要以便携方式获取机器的路由表。我正在使用C ++,如果有帮助,Boost库已经可用。
不调用外部命令,例如" route"因为它不便携,外部命令可能无法使用。
答案 0 :(得分:5)
当然,调用route
是不可取的,因为分叉和执行很少是这样的。
不幸的是,我可以告诉你[作为Net-SNMP项目的创始人,我们在C中报告许多平台的路由],没有平台独立的方式。您需要了解每个人如何存储信息以及如何访问信息。在linux中的EG,你可以从/ proc获得它。在其他操作系统中,您可以通过API调用获取它。你不太可能很高兴发现你想要的东西不存在。然后,您甚至会发现IPv4和IPv6之间可能存在差异的平台!
然而,您可以随意浏览Net-SNMP代码并查找在那里完成的所有方法。首先是agent/mibgroup/ip-forward-mib/data_access/
和agent/mibgroup/mibII/var_route.c
。
答案 1 :(得分:0)
您可以查看第三方可移植性库,例如libdnet(BSD许可证)。