【发布时间】: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 page的getnameinfo它将在成功时返回0那么为什么要打印非零大小写的字符串if(error_info){...}?你也可以打印返回值吗?还假设您可以将正确的指针传递给主机名字符串。并通过*host和*serv打印主机和服务。 -
您可能希望将
if(error_info){更改为if(!error_info){并重新测试。