在线时间684 小时
UID3104112
注册时间2015-3-5
NXP金币19
TA的每日心情 | 难过 2019-9-19 08:55 |
---|
签到天数: 269 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 2784
- 最后登录
- 2019-11-29
|
本帖最后由 华尔兹兹 于 2015-12-8 17:29 编辑
MQX 4.1库中
RTCS中RTCSCFG_ENABLE_LWDNS和RTCSCFG_ENABLE_DNS有什么区别?
默认的是RTCSCFG_ENABLE_LWDNS 1
RTCSCFG_ENABLE_DNS 0
LW 时间lightweight , 就是轻量级的,简化版的,实现基本功能的版本, 这样可以节省memory.
一般DNS,可能返回多个IP地址,抓包看这些IP是没有先后顺序,第一个是哪个随机。
MQX4.1中的函数RTCS_resolve_ip_address返回的是第一个IP地址,在有些网络环境下,有些IP地址不能用(原因未知)。
使用DNS时,感觉是有缓存的,就是下次DNS时,list里只有一个IP。
使用LWDNS会返回多个IP,可以挨个查找使用。
如果遇到上述某些IP不能正常使用
使用DNS的情况时,可能无法试用别的IP
使用LWDNS,函数RTCS_resolve_ip_address返回第一个IP,运气不好的话,可能很长时间没办法返回你期待的IP,这时候这个函数就没办法用了,根据RTCS_resolve_ip_address改了一下
if(getaddrinfo("www.baidu.com", NULL, &addrinfo_hints, &addrinfo_result) == 0)
{
addr_temp= addrinfo_result;
while (addr_temp != NULL) {
srv_ip= ((structsockaddr_in *)((*addr_temp).ai_addr))->sin_addr.s_addr;
printf("Get IP address: %d.%d.%d.%d\n",
(uint8_t) (srv_ip >> 24),(uint8_t)(srv_ip >> 16),
(uint8_t) (srv_ip >> 8), (uint8_t) (srv_ip));
addr_temp= addr_temp->ai_next;
}
freeaddrinfo(addrinfo_result);
} 网络小白,未及深入研究,懂的大神回个帖
|
|