在C++中获取路由表的便携方式

在C++中获取路由表的便携方式,c++,networking,portability,C++,Networking,Portability,我需要一个便携式的机器路由表。我使用C++,如果有帮助,Boost库已经可用。 不要调用route这样的外部命令,因为它不可移植,并且外部命令可能不可用。当然不建议调用route,因为分叉和执行很少是一种方式 不幸的是,我可以告诉你[作为这个项目的创始人,我们用C语言报告了许多平台的路由],没有平台独立的方法。您将需要了解每个数据库如何存储其信息以及如何访问这些信息。例如,在linux中,您可以从/proc获得它。在其他操作系统中,您可以通过API调用获得它。当你发现你想要的东西不存在时,你可能

我需要一个便携式的机器路由表。我使用C++,如果有帮助,Boost库已经可用。 不要调用route这样的外部命令,因为它不可移植,并且外部命令可能不可用。

当然不建议调用route,因为分叉和执行很少是一种方式

不幸的是,我可以告诉你[作为这个项目的创始人,我们用C语言报告了许多平台的路由],没有平台独立的方法。您将需要了解每个数据库如何存储其信息以及如何访问这些信息。例如,在linux中,您可以从/proc获得它。在其他操作系统中,您可以通过API调用获得它。当你发现你想要的东西不存在时,你可能不会高兴。然后,您甚至会发现一些平台可能在IPv4和IPv6之间有所不同

但是,您可以自由地深入研究网络SNMP代码,并寻找在那里实现的所有方法。首先请参阅agent/mibgroup/ip forward mib/data_access/和agent/mibgroup/mibII/var_route.c。

当然不建议调用路由,因为分叉和执行很少是一种方式

不幸的是,我可以告诉你[作为这个项目的创始人,我们用C语言报告了许多平台的路由],没有平台独立的方法。您将需要了解每个数据库如何存储其信息以及如何访问这些信息。例如,在linux中,您可以从/proc获得它。在其他操作系统中,您可以通过API调用获得它。当你发现你想要的东西不存在时,你可能不会高兴。然后,您甚至会发现一些平台可能在IPv4和IPv6之间有所不同


但是,您可以自由地深入研究网络SNMP代码,并寻找在那里实现的所有方法。首先请参阅agent/mibgroup/ip forward mib/data_access/和agent/mibgroup/mibII/var_route.c。

您可以查看第三方可移植性库,如libdnet BSD许可证


您可以查看第三方可移植性库,如libdnet BSD许可证


路由表的概念是不可移植的。您能具体说明您感兴趣的操作系统吗?网络、子网掩码、网关和接口方面的路由表信息。操作系统=Windows XP及以上版本、Linux 2.4及以上版本、OS X、Android。这些是主要的。此外,对于Linux,我不能假设/proc实际上已安装或可用,因为它可以关闭。路由表的概念是不可移植的。您能具体说明您感兴趣的操作系统吗?网络、子网掩码、网关和接口方面的路由表信息。操作系统=Windows XP及以上版本、Linux 2.4及以上版本、OS X、Android。这些是主要的。同样对于Linux,我不能假设/proc实际上已安装或可用,因为它可以关闭。