W5500以太网控制器芯片:实现DNS功能

Posted zhangfls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了W5500以太网控制器芯片:实现DNS功能相关的知识,希望对你有一定的参考价值。

#W5500以太网控制芯片相关文章链接#

上一篇:

W5500以太网控制器芯片(三):实现DHCP服务

使用W5500时,如果要连接的是域名,则连接TCP服务器前将要域名转成IP再进行连接,这时候就要用到DNS功能。

1、导入DNS相关的官方的ioLibrary库文件:
dns.c、dns.h

具体参考前面的文章。
​​​​​​​

2、首先要确保W5500已经分配好网络,其所在区域网内有DNS服务器

定义DNS服务器地址和要解析的域名:

//Default Network Configuration
wiz_NetInfo gWIZNETINFO = { 
	.mac = {0x00, 0x08, 0xdc,0x00, 0xab, 0xcd},
	.ip = {192, 168, 1, 123},
	.sn = {255,255,255,0},
	.gw = {192, 168, 1, 1},
	.dns = {114,114,114,114},
	.dhcp = NETINFO_DHCP,
};

uint8_t DNS_2nd[4]    = {8, 8, 4, 4};      // Secondary DNS server IP
uint8_t Domain_name[] = "www.baidu.com";    // for Example domain name
uint8_t Domain_IP[4]  = {0, };               // Translated IP address by DNS

3、解析:应该在网络初始化完成后,再调用该函数。

void dns_test(void)
{
	int8_t  ret;

   printf("\\r\\n=== DNS Client Example ===============\\r\\n");
   printf("> DNS 1st : %d.%d.%d.%d\\r\\n", gWIZNETINFO.dns[0], gWIZNETINFO.dns[1], gWIZNETINFO.dns[2], gWIZNETINFO.dns[3]);
   printf("> DNS 2nd : %d.%d.%d.%d\\r\\n", DNS_2nd[0], DNS_2nd[1], DNS_2nd[2], DNS_2nd[3]);
   printf("======================================\\r\\n");
   printf("> Example Domain Name : %s\\r\\n", Domain_name);

   /* DNS client initialization */
   DNS_init(SOCK_DNS, gDATABUF);

   /* DNS procssing */
   if ((ret = DNS_run(gWIZNETINFO.dns, Domain_name, Domain_IP)) > 0) // try to 1st DNS
   {
      printf("> 1st DNS Reponsed\\r\\n");
   }
   else if ((ret != -1) && ((ret = DNS_run(DNS_2nd, Domain_name, Domain_IP))>0))     // retry to 2nd DNS
   {
      printf("> 2nd DNS Reponsed\\r\\n");
   }
   else if(ret == -1)
   {
      printf("> MAX_DOMAIN_NAME is too small. Should be redefined it.\\r\\n");
   }
   else
   {
      printf("> DNS Failed\\r\\n");
   }

   if(ret > 0)
   {
      printf("> Translated %s to %d.%d.%d.%d\\r\\n",Domain_name,Domain_IP[0],Domain_IP[1],Domain_IP[2],Domain_IP[3]);
      //
      // TO DO
      //
   }
}

4、调用完成后,解析到的IP会被放在Domain_IP数组内。随后连接该IP,即可连接上对应域名的服务器了。

以上是关于W5500以太网控制器芯片:实现DNS功能的主要内容,如果未能解决你的问题,请参考以下文章

如何利用原生JS+AJAX在W5500的WEB界面上面实现按键控制单片机IO口

SWA2G422&485JK2G基础篇: STM32+W5500(以太网)实现MQTT通信控制,485/422透传通信

SWA2G422&485JK2G基础篇: 手机APP通过APMACBind方式绑定W5500(以太网)设备,实现MQTT远程通信控制

STM32 以太网W5500

W5500 学习开发: 硬件使用说明

W5500 学习开发: 硬件使用说明