WIZnet2012

【Final】如何用W7100A单芯片实现DNS客户端(二)

0
阅读(1053) 评论(0)

这篇文档将会介绍DNS以及如何用iMCU7100EVB来实现DNS客户端,并且通过实际例子演示该功能。

在昨天的博文“如何用W7100A实现DNS客户端(一)”我们给大家介绍了第二章域名系统以及第三章DNS演示的部分,今天继续与大家分享第四章实现代码的内容。本文中所有的示例代码全部基于Keil编译环境。

这是本篇文档的最后一部分,希望对大家有所帮助。

 

第一部分请参考:http://blog.iwiznet.cn/?p=1208

 

 

4 实现代码

本章将会介绍相关的示例代码,这些代码被下载到iMCU7100EVB开发板后,开发板利用UDP协议实现DNS客户端的功能。更多关于UDP协议的详细信息,请参考文档‘如何使用W7100A实现UDP通信’。

 

4.1 dns_query()函数

该DNS客户端的示例代码是用dns_query()函数完成的。其它的低级函数被dns_query()函数调用执行。代码4.1为dns_query()函数的代码。

所有的变量都定义于dns_query()函数内,结构变量dhdr位于dns.c的头文件中。DNS_IP保存DNS服务器的IP地址,必须正确输入。

首先,打开UDP socket。在代码4.2中,将端口号设置为5000(端口号可以根据用户的需求进行修改),然后利用dns_makequery()函数(后面将会详细介绍该函数)创建一个查询信息。在查询信息创建后,调用sento()函数将该信息作为一个UDP数据包发送到服务器。

在发送完查询信息后,iMCU7100EVB等待DNS服务器的响应。通过getSn_RX_RSR()函数来确认DNS服务器是否接收到响应信息;如果在一段时间后没有收到响应,就会认为是超时。一旦有响应,通过recvfrom()函数接收响应,并且调用parseMSG()函数来解析该响应信息。parseMSG()函数可以检测来自DNS服务器应答的rcode(DNS信息报文头段);并且返回1或者0。若返回值为1(rcode=0), 表示域名搜索成功。除了0之外的其它值都表示发生错误,但是在示例代码中,对于其它错误parseMSG()函数的返回值都将为0。

 

后续部分请参考: 如何用W7100A实现DNS客户端(二)/ http://blog.iwiznet.cn/?p=1220

 

 

技术支持: wiznetbj@wiznettechnology.com

销售和代理: winzethk@wiznettechnology.com

 

更多信息,请登录我们的官方网站:http://www.wiznettechnology.cn

 

 

有关产品W7100A的更多应用博文,请参考下列文章:

如何用W7100A实现DNS客户端

如何用W7100A实现HTTP客户端(一)