DNS是域名服务器的简称,用于域名解析。DNS的出现就是为了用户在访问网页时,不用再输入网站的IP地址,而是用一串便于记忆的字母就可以访问。通过W5500来实现DNS域名解析也是非常方便的。本节将解析www.baidu.com对应的IP 地址� 客户端初始化完毕之后,如果DNS 运行标志位是1或者DNS 发送次数超�3次就直接返回。如果不是上面的情况,并且DNS Server的IP不是0.0.0.0时,进入switch函数。当处于DNS 域名解析成功状态时,DNS_OK�1,发送请求报文次数置0,并且把得到的域名对应的IP地址copy到ConfigMsg.rip� 然后我们把解析到的www.baidu.com的IP地址通过串口打印出来。当处于DNS解析域名失败时,标志位置0,请求报文次数加1,然后跳出循环。如果以上情况都不是,打印出无效的DNS Server 地址。以上是简单介绍了通过W5500解析百度IP地址的过程。过程其实是很简单的,就是通过不断读取寄存� 状态来判断W5500的状态,最终成功解析到IP地址�
DNS解析的过程的原理示意图如下:while(1) { if(USART_RX_STA & 0x8000) // 串口数据发� { len=USART_RX_STA&0x3fff; memcpy(buffer,USART_RX_BUF,len); USART_RX_STA=0; memset(USART_RX_BUF,0,len+1); printf("\r\n[ %s ]'s IP Address is:\r\n",buffer); dns_flag=1; // DNS标志位置1 } if(dns_flag==1) { if(dns_num>=6) // DNS次数�6 { dns_flag=0; // DNS标志位清0 dns_num=0; // dns_num�0 printf("\r\nInput the domain name(eg>>www.baidu.com):"); } else do_dns(buffer); // DNS过程 } }DNS的测试步骤如�