当我尝试使用getaddrinfo获取DNS名称的IP地址时,我收到以下错误
getaddrinfo错误:提供了nodename或servname,或者未知
这个错误意味着什么? getaddrinfo有可能无法解析DNS名称吗? 但nslookup适用于此地址。我尝试在没有端口的情况下调用getaddrinfo,并且没有带有相同结果的AI_NUMERICSERV标志。
我的电话有什么问题? OS X 10.11 plaftorm。
这是示例代码
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)
{
}
答案 0 :(得分:1)
问题与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()按预期工作。