2016-02-29 111 views
2

我正在使用具有多個本地網絡接口的機器。每個接口是一個不同的網絡上,例如:en0可能是10.0.0.xen1192.168.1.x在Mac OS X和iOS上查找本地IP地址的接口/路由?

我想以編程方式回答這個問題:「哪個界面很可能是能夠獲得給定的本地IP地址?」

例如,如果我想與10.0.0.75交談,那將是en0,192.168.1.4將是en1。我確定有比手動比較IP地址片段更聰明的方法。

如果在iOS和Mac OS X上都可以使用,則獎勵點 - iOS確實支持多個本地界面,即使很少。

+0

這是一個很好的理由,這是很難的:這是一個低層次的關注。如果您嘗試建立網絡連接,則應該讓(經過測試的)網絡庫處理此問題。你能解釋更多關於*爲什麼*你想這樣做? (你想解決什麼問題?) – eelco

回答

1

我會考慮的方法是枚舉所有配置的接口並獲取其IP地址和網絡掩碼。然後,您可以計算該子網的Hostmin和Hostmax,如果您的候選人屬於Hostmax-Hostmin IP範圍,則應直接在該接口的本地子網上訪問該主機。

您可以在http://jodies.de/ipcalc找到這些計算類型的在線工具。以編程方式進行這些計算是非常簡單的位操作。

您可以在arpa/inet.hinet_addr中使用IP地址功能,例如,將爲您提供來自點分十進制格式化IP地址的32位值。