getnameinfo Non-recoverable name resolution failure 错误

原文地址:

http://www.jimmo.org/non-recoverable-name-resolution-failure-with-getnameinfo-on-solaris/


函数原型:

int getnameinfo(const struct sockaddr *sa, socklen_t salen,
          char *host, socklen_t hostlen, char *serv, socklen_t servlen,
          int flags);

在linux中,类似代码:

struct sockaddr_storage saddr;
//给saddr赋值
getnameinfo((struct sockaddr*)&saddr,sizeof(saddr),....);

这段代码可以运行良好,因为linux中getnameinfo会查看saddr中的sin_family计算出真正的salen。

但是在其他系统中,比如Solaris,并没有这样的机制,所以会返回错误4,即Non-recoverable name resolution failure错误。
同样在安卓中也有这个错误!

解决办法就是传入真正的salen。

比如IP4就使用sizeof(struct sockaddr_in);
IP6就使用sizeof(struct sockaddr_in6);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值