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/

10-13 05:15