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以太网控制器芯片(五):实现FTP客户端​​​​​​​

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值