getaddrinfo error: nodename nor servname provided, or not known

getaddrinfo error: nodename nor servname provided, or not known

当我尝试使用 getaddrinfo 获取 DNS 名称的 IP 地址时,出现以下错误

getaddrinfo error: nodename nor servname provided, or not known

这个错误是什么意思? getaddrinfo 是否有可能无法解析 DNS 名称? 但是 nslookup 对于这个地址工作正常。我尝试在没有端口且没有 AI_NUMERICSERV 标志的情况下调用 getaddrinfo,结果相同。

我的电话有什么问题吗? OS X 10.11 平台。

这是示例代码

struct addrinfo hints, *servinfo;
int rv;

printf("hostname: %s port: %s ", hostname, port);

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // use AF_INET6 to force IPv6
hints.ai_flags=AI_DEFAULT|AI_NUMERICSERV;
if ( (rv = getaddrinfo( hostname , port , &hints , &servinfo)) != 0)
{

}

问题与 Mac OS X 上的沙盒机制有关。 我忘记了我的应用程序是沙盒化的事实。 确保您的权利文件中包含以下行。

<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>

如果您的应用程序未被沙盒化,getaddrinfo() 将按预期工作。