2009-11-22 29 views
1

我正在使用SystemConfiguration框架從我的應用程序的動態存儲中獲取當前IP。可能使用SystemConfiguration獲取IP的主機名?

是否有可能從動態存儲中獲取主機名?目前的IP可能是本地的,所以我試圖讓返回的值是「mymac.local」或「2adg3.dsl.lgtpmi.sbcglobal.net」,這取決於我如何連接到網絡。

我試過SCDynamicStoreCopyLocalHostName(NULL),但它只返回計算機名稱本身(而不是.local部分),即使IP解析爲可供Internet上每個人訪問的主機名。

回答

3

你可以嘗試

[[NSHost currentHost] names] 

我只是嘗試它,它返回我的機器的所有本地主機名。

更新:
這是一個很好的博客貼子,修復了一些NSHost問題:
http://cocoawithlove.com/2009/11/drop-in-fix-for-problems-with-nshost.html

+0

我正要建議'gethostbyname2('* 3 *')',但這可能返回相同結果並且十倍容易。 –

+0

我應該提到[[NSHost currentHost]名稱]完全符合我的要求,但是每個人都說不使用NSHost,因爲它阻塞並且不是線程安全的。我一直在尋找CFHost,但它不會返回像「mymac.local」這樣的本地名稱。 –

+0

我添加了一個鏈接到我的原始答案,它顯示了NSHost的一些解決方法。 –

相關問題