php curl使用getaddrinfo()将主机名解析为IP地址。通过设置一个选项,可以很容易地让它查找IPv4地址,但这需要做很多工作,而且当我们启动IPv6并在网络上正常运行时,将很难撤消。
有什么方法可以将getaddrinfo()设置为我们整个ubuntu服务器的默认ipv4查找吗?
谢谢
韦恩
最佳答案
这个解决方案是针对c的,对php没有把握。调用getaddrinfo时,传递一个struct addrinfo,提供有关要查找的内容的“提示”。下面的例子
struct addrinfo *res;
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_INET;
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
getaddrinfo("localhost", "80", &hints, &res);
从我的评论中复制如下,因为它似乎适用于答案:
只需为getaddrinfo创建一个包装函数,它提供
“默认值”。然后在整个应用程序中使用包装函数。
当IPv6启动并运行时,更改函数的内部“默认值”。
关于php - 是否可以将getaddrinfo()设置为默认情况下仅检索IPV4地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13817351/