【问题标题】:Unexpected getnameinfo() hostname意外的 getnameinfo() 主机名
【发布时间】:2014-06-17 15:51:59
【问题描述】:

我使用 C 代码从 IPv6 地址获取主机名,使用 getnameinfo api。它返回 0 作为成功,但目标字符串为“空”。不知道错在哪里。

error_info = getnameinfo(who, wholen, host, NI_MAXHOST, serv, NI_MAXSERV, NI_NOFQDN);

if(error_info){
    fprintf(stderr, "\ngetnameinfo is success.");
    fprintf(stderr, "\nstring @ host :: %s and serv :: %s", host, serv);
}

输出:

getnameinfo is success.
string @ host :: and serv ::

【问题讨论】:

  • 根据man pagegetnameinfo 它将在成功时返回0 那么为什么要打印非零大小写的字符串if(error_info){...}?你也可以打印返回值吗?还假设您可以将正确的指针传递给主机名字符串。并通过*host*serv 打印主机和服务。
  • 您可能希望将if(error_info){ 更改为if(!error_info){ 并重新测试。

标签: c linux sockets


【解决方案1】:

IP 到主机名需要 DNS 服务器中的反向 DNS 条目。在这里,对于提供的 ip 地址,没有可用的反向 DNS,因此它返回成功并带有 NULL 条目。使用反向 DNS 条目检查其他主机名。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多