【问题标题】:getaddrinfo error: nodename nor servname provided, or not knowngetaddrinfo 错误:提供节点名或服务名,或未知
【发布时间】:2017-04-18 08:26:42
【问题描述】:

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

getaddrinfo 错误:提供节点名或服务名,或未知

这个错误是什么意思? 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)
{

}

【问题讨论】:

    标签: macos unix dns posix getaddrinfo


    【解决方案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() 将按预期工作。

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 2012-11-02
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2020-08-21
      • 2015-07-31
      • 1970-01-01
      相关资源
      最近更新 更多