- 论坛徽章:
- 0
|
GCC版本: gcc version 4.4.1
Linux版本:Linux (none) 3.0.8 #3 Wed Apr 10 15:47:48 CST 2013 armv5tejl GNU/Linux
公司的一个网络库里面需要解析域名,于是直接想到了getaddrinfo, 但是发现存在一个非常奇怪的偶现问题:
DNS配置如下:
# cat /etc/resolv.conf
nameserver 202.96.134.134
nameserver 8.8.8.8
如果getaddrinfo正常工作,其基本流程应该是,首先向202.96.134.134发送DNS请求,如果超时无应答,则向8.8.8.8发送DNS请求。
现在发送公司的程序在偶然会出现如下情况:
1. getaddrinfo 既没有向 202.96.134.134 发送DNS报文,也没有向8.8.8.8发送DNS报文,而是直接快速返回失败,错误码“EAI_NONAME -2 NAME or SERVICE is unknown ”,造成DNS解析失败。
2. 或者getaddrinfo没有向 202.96.134.134 ,而是直接向8.8.8.8发送DNS(就像是检测出202不可用一样,但是抓包没有任何去往该处的报文)。
更奇怪的是,在相同平台上,使用测试程序,即最简单的调用getaddrinfo的程序,竟然没有问题,即两个不同程序都是调用getaddrinfo,表现出的现象不一样。
有没有朋友对这个有经验? |
|