#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,即可連接上對應域名的服務器了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290173.html
標籤:其他
下一篇:人生中的第一篇博客
