2013-11-22 137 views
0

例如在OSX上,我希望能夠請求en0,en1等。boost :: asio獲取特定網絡設備的IP地址?

我在這裏找到了示例代碼,可以讓您迭代所有設備,但是我看不到如何獲取這些人的姓名,或者以跨平臺的方式按姓名查找。

+0

[枚舉ipv4和ipv6地址我的卡使用boost asio]可能重複(http://stackoverflow.com/questions/6327210/enumerating-ipv4-and-ipv6-address-of-my-cards-using- boost-asio) –

回答

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地址。

然後,可能有可能,也許別人可以幫助你。

+0

對不起,如果我不清楚。在Mac上,不同的服務(無線,以太網等)會有BSD設備名稱,例如en0,en1等。爲eth0。我想象在Windows上一樣。我希望能夠通過名稱查詢設備,即詢問en0的IP地址是什麼? – Muellmusik

+0

另外我說的是本地主機 – Muellmusik

+0

嗯,這不是真正的功能,我期望從boost :: asio。您基本上想知道您的操作系統已分配給機器上某些設備的名稱。我不知道該怎麼做。我只在linux上工作,如果我需要類似的東西,我可能會看看名稱<->在ifconfig中的IP地址轉換。祝你好運。 – DeVadder

0

使用Boost.Asio是不可能的,但其他庫(如libuv)可用於查詢系統的網絡接口。 Here是libuv介紹的一個例子。