我使用getaddrinfo(3)从一个同时支持ipv4和ipv6的域获取列表ip地址,但是本地系统只支持ipv4,或者支持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);发布于 2021-07-15 11:39:31
如果您知道您只需要IPv4,请将ai_family设置为AF_INET。
使用AF_INET表示IPv4,AF_INET6表示IPv6。
https://unix.stackexchange.com/questions/658450
复制相似问题