で呼び出すgetaddrinfo
とAF_UNSPEC
、理論的には好きなアドレス ファミリを返すことができます: AF_INET
、、AF_INET6
おそらく AppleTalk、Bluetooth、データリンク、ネットリンク アドレス...
実際には、ほとんどのプラットフォームで返されるだけAF_INET
ですAF_INET6
。
- FreeBSD では、
AF_INET
orのみを返すことができAF_INET6
ます (ソースで確認) - Linuxでは、同上(glibcのマンページによる)
- Windows では、同様に、「ai_family の AF_UNSPEC の値は、呼び出し元が AF_INET および AF_INET6 アドレス ファミリのみを受け入れることを示します。」[MSDN、getaddrinfo]
他のシステムはどうですか?他のアドレス構造を取得できるプラットフォームはありますか?
私は特に MacOS に疑いを持っています。ソースが opensource.apple.com/source/Libc から欠落しているようで、マンページには記載されていません。getaddrinfo が他のアドレス ファミリを返したことを示す可能性がある Mac のテスト ランからの再現不可能なログ ファイルがあります。サポートしているその他のプラットフォームは、AIX、Solaris、HP-UX です。
返された構造でファミリを確認できることはわかっています。ただし、AF_INET(6) 以外の結果を得るために、どのような興味深い文字列やヒントを使用する必要があるかはわかりません。