获取主Mac地址和主机IP - c ++

时间:2015-11-16 00:53:25

标签: c++ network-programming

目前我已经获得了可以在我的主机上找到的所有mac地址和IP地址的列表。这些也包括VM的网络信息。我正在使用Khalid Shaikh's 3rd option in codeguru中的第三个选项。但是,它返回了我看到的mac地址和ip地址的完整列表。有没有办法让我只能使用IP地址?一个示例场景将是我在ping服务器时使用的IP地址和mac地址。我能想到的唯一方法是跟踪路由,但我不知道如何在c ++中做到这一点。任何帮助都可以。谢谢!

1 个答案:

答案 0 :(得分:0)

实际上,返回的接口中的任何一个都可以是您可以使用的接口。 因此,您将使用一个接口发送到某些目标地址,而对于其他目标地址,您将使用其他接口。

然后,您需要阅读路由表以确定您的数据报实际发送的接口,具体取决于目标地址。

为此,我将按以下方向之一进行:

  • 从iptables获取路由:从所说的here开始,没有编程API,但你可以使用shell命令
  • 使用Routing sockets

    获取路线表

    int sockfd = socket(AF_ROUTE,SOCK_RAW,0);

  • 使用Netlink sockets

  • 获取路线表

获得路由表后,您需要解释路由并找出您的传出数据报将用于Internet或其他IP地址的接口。