boost :: asio获取特定网络设备的IP地址?

时间:2013-11-22 10:21:03

标签: boost-asio

例如在OSX上,我希望能够要求en0,en1等。

我在这里找到了示例代码,可让您遍历所有设备,但我无法通过跨平台的方式查看如何获取这些设备的名称或按名称查找。

3 个答案:

答案 0 :(得分:0)

我不完全确定我理解你的问题。但是当你说你找到了迭代你正在寻找的设备的方法时,我想你的意思是你在使用boost解析查询时得到的迭代器之一?

如果是,则迭代端点列表。 如果您知道端点,只需拨打some_endpoint.address()即可获取其地址。这会返回boost::asio::ip::address(或udp,当然,如果适用),并且您可以通过该地址以各种方式进行互动:http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/ip__address.html

我猜你正在寻找to_string()

如果那不是你提出的问题,请不要理会。 ^^

编辑:

如果您想要在拥有地址或端点的远程主机上找到设备名称,我无法帮助您。老实说,我怀疑使用asio很容易。我总是假设这些名字是内部的。并且asio已经在Osi堆栈上太远,甚至可以轻松找到设备MAC地址。我假设您需要登录远程主机并使用ifconfig或系统使用的任何内容查找其中的名称,查找您从外部找到的IP地址。

然后,有可能,也许其他人可以帮助你。

答案 1 :(得分:0)

Boost.Asio无法实现,但其他库(如libuv)可用于查询系统的网络接口。 Here是libuv介绍中的一个例子。

答案 2 :(得分:0)

在Linux上,您可以使用getifaddrs。 OSX上可能有类似的功能,因为FreeBSD(以及可能的其他BSD变体)上可以使用该功能。