當我打電話getaddrinfo
與AF_UNSPEC
,理論上它可以返回它喜歡的任何地址族:AF_INET
,AF_INET6
,可能的AppleTalk,藍牙,數據鏈路,網絡鏈路地址...getaddrinfo可以返回哪些地址族?
在實踐中,它只是在大多數返回AF_INET
和AF_INET6
平臺:
- 在FreeBSD,它只能返回,同上(根據glibc的手冊頁) 或
- 在Linux
- 在Windows上,同樣,「ai_family的AF_UNSPEC值表示調用方只接受AF_INET和AF_INET6地址族。」 [MSDN, getaddrinfo]
AF_INET6
(在源選中)
其他系統呢?有沒有平臺可以讓我們獲得其他地址結構?
我特別懷疑MacOS - 源代碼似乎從opensource.apple.com/source/Libc中丟失,並且該手冊頁沒有說明。我們在Mac測試運行中有一個不可重複的日誌文件,可能表明getaddrinfo返回了一些其他地址系列。我們支持的其他平臺是AIX,Solaris和HP-UX。
我知道我可以檢查返回的結構中的家庭。我無法猜測可能需要使用哪些有趣的字符串和提示來獲取非AF_INET(6)結果。
好吧,'netdb.h'似乎表明'struct addrinfo'的'ai_family'可以是任何''PF_xxx'「,所以也許它可能是任何東西?這似乎遠非一個明確的答案,儘管......評論如果這是一個有用的地方看。另外,手冊頁確實提供了在提示中將'ai_family'設置爲'PF_UNSPEC'的參考...現在,如果只是列舉「操作系統支持的任何協議族」是什麼。 :)在示例部分有進一步的參考,它*可以是其他值,但我(如你)看不到*其他值......: -/ – lindes