getaddrinfo() は ipv4 と ipv6 の両方を返し、ローカルシステムは ipv4 だけを返します。

getaddrinfo() は ipv4 と ipv6 の両方を返し、ローカルシステムは ipv4 だけを返します。

ipv4とipv6をサポートするドメインからリストIPアドレスを取得するために使用していますが、getaddrinfo(3)ローカルシステムはipv4のみをサポートするか、ipv4とipv6の両方をサポートします。システムが ipv4 と ipv6 の両方をサポートする場合、ipv4 と ipv6 の両方をgetaddrinfo(3)照会します。システムはipv4とipv6のみをサポートします。 ipv4をサポートし、getaddrinfo(3)ipv4のみを照会します。設定ai_flagsしようとしましたが、AI_ADDRCONFIGまだipv4とipv6を照会し、システムはipv4のみをサポートします。私は何をすべきですか?

これは私のコードです。

struct addrinfo hint, *res = NULL, *p = NULL;
int err;
ACE_OS::memset(&hint, 0, sizeof hint);
hint.ai_family = AF_UNSPEC;
hint.ai_socktype = SOCK_STREAM;
hint.ai_flags = AI_ADDRCONFIG;
err = ACE_OS::getaddrinfo(hostname.c_str() ,"http", &hint, &res);

ベストアンサー1

IPv4だけが必要であることがわかっている場合はこれai_familyをに設定してくださいAF_INET

AF_INETIPv4の場合、AF_INET6IPv6の場合。

おすすめ記事