本例已lwip1.40为例,有os。

1. 先把宏LWIP_DNS开启

#ifndef LWIP_DNS

#define LWIP_DNS                        1
#endif

2. 在系统初始化调用 void sys_timeouts_init(void);初始化dns定时器dns_tmr(),dns定时器定时更新dns_table[DNS_TABLE_SIZE]的状态

static struct dns_table_entry dns_table[DNS_TABLE_SIZE];

3、编写程序

void test_lwip_dns(void )
{ip_addr_t host_ip;err_t ret;ret = dns_gethostbyname("www.baidu.com", &host_ip, dns_found, "hello");if (ret == ERR_INPROGRESS){//需要通过向dns服务器发送dns请求数据来获取hostname对应的IP地址printf("等待\r\n");}else{//从dns缓存表去除hostname对应的IP地址printf(" %s\r\n", ipaddr_ntoa(&host_ip));}
}
//
void dns_found(const char *name, ip_addr_t *host_ip, void *callback_arg)
{printf("%s,%s, %s\r\n", name, callback_arg, ipaddr_ntoa(host_ip));
}当从dns服务器找到hostname对应的IP地址后,static void dns_check_entry(u8_t i)函数中执行dns_found回调函数。

4、实验结果

第一次执行查询,需请求互联网

第二次查询,直接从缓存表查找

LWIP实现DNS功能相关推荐

  1. 配置 HTTP 与 DNS 功能

    实验名称:配置 HTTP 与 DNS 功能 实验拓扑: 实验需求: 1.按图中所示配置网络设备IP地址: 2.通过客户端访问 web 服务器,看到相关内容 实验步骤: 1.配置网络设备 Gateway ...

  2. DNS云学堂 | 替代传统Windows DNS功能,不得不说的动态域名更新

    为满足应用的双活改造和灵活切换的场景,很多企业依靠DNS系统实现应用与IP的解耦.搭建专业的DNS系统,替代传统Windows的DNS功能,成为了企业信息化发展健全的一个必要过程. 与域控结合,组建更 ...

  3. W5500以太网控制器芯片(四):实现DNS功能

    #W5500以太网控制芯片相关文章链接# 上一篇: W5500以太网控制器芯片(三):实现DHCP服务 使用W5500时,如果要连接的是域名,则连接TCP服务器前将要域名转成IP再进行连接,这时候就要 ...

  4. 防火墙DNS功能在配置防火墙策略中的应用

    随着云计算.大数据.AI等新兴技术的兴起,多活数据中心之间互相切换,保证业务100%稳定.许多数据中心都做到了多活,多活之间就导致业务地址可以在多个数据中心之间切换,今天是A地址,明天就是B地址,所以 ...

  5. LWIP之DNS域名解析(二)

    (一)交代了下DNS.C文件的代码,那么在(二)中我再补充下 DNS.h的代码,并做简要说明. 之后是netdb.h的代码和netdb.c的代码! 代码已经注释完. 代码中可能加了注释后,可能会出现一 ...

  6. lwip中dns相关函数gethostbyname()的原理

  7. STM32 基础系列教程 36 - Lwip_dns

    前言 域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP端口53 ...

  8. 通过DNS实现DVR的网络访问功能

    通过DNS实现DVR的网络访问功能 Date: September 30,2012 Keyword:DNS  DVR  内网 外网 网络代理 公司内有数台模拟信号的监控摄像头,通过Cable集中被一台 ...

  9. 思科路由器的DNS及DHCP功能

    我们知道,思科路由器以功能强大.负载能力强而著称,能更好地服务于网络.今天,我们在这里为大家介绍其两个特殊的应用,一起来看看吧. 一.DNS功能 在大型网络中一般都是需要部署DNS服务器的,而DNS是 ...

最新文章

  1. PHP solr服务器搭建,搜索方案 solr+php如何安装配置?
  2. python入门实践1-11课视频分享
  3. Tinyshop前后台操作基础教程讲解
  4. 【知识星球】剪枝量化初完结,蒸馏学习又上线
  5. windows下安装Oracle10G
  6. 贝叶斯规则(Bayes’ rule)
  7. UTF-8, Unicode, GB2312格式串转换之C语言版
  8. TypeScript Type Assertions - 类型断言
  9. php 正则表达式验证金额,php 正则表达式验证数字
  10. Sentinel(十五)之在生产环境中使用 Sentinel
  11. C语言求超级素数的个数,求一个输出a-b的超级素数程序(c)
  12. Android Studio 下载教程
  13. 笔记本拆c面_给老笔记本更换高清屏的经验与总结(翻车记录)
  14. [Android/Icon] 分享一个图标/Icon制作网站
  15. 毕业设计,微信小程序-购物小程序
  16. ES6重要知识点总结
  17. 四十一、Fluent初学者学习流程
  18. css中relative、absolute和float
  19. python plot画柱状图_Python绘制柱状图
  20. Webpack4 配置TS Loader

热门文章

  1. 洛谷 P3003 [USACO10DEC]苹果交货Apple Delivery dijkstra 最短路
  2. 【数学】从零开始学统计
  3. 想出名裸奔可以,但是请自己去,Leo谈“鹰爸训练4岁儿子雪中裸跑”
  4. 大江狗的新博客长啥样?
  5. strongly-typed language(强类型语言)
  6. ofstream和ifstream详细用法
  7. iOS 获取字符串数学公式、字符串条件运算和逻辑运算的计算结果
  8. mac 建立软链接_Mac中创建URL链接文件 | 玩转苹果
  9. uniapp 微信公众号网页获取微信头像昵称
  10. 玩转百度AI Studio 之 用“四十路泰坦”跑线性回