dns: domain name system,網域名稱系統。簡單理解,我們平時在瀏覽器上輸入的都是網域名稱,如www.baidu.com,這種網域名稱便於人們的記憶和溝通。你可以很輕鬆的記住10個網域名稱,但要你記住10個純數字的ip位址,那就比較費勁了,但電腦通訊的時候是通過ip來通訊的。那麼dns就可以解決這個問題,把網域名稱轉化為ip位址。具體dns的詳細內容可參考該文章:
#define max_domain_name 16 // for example "www.google.com"
#define ipport_domain 53 ///< dns server port number
#define socket_dns 2//定義乙個socket口,w5500有8個,0-7都行
wiz_netinfo gwiznetinfo = ,
.ip = ,
.sn = ,
.gw = ,
.dns = ,
.dhcp = netinfo_dhcp};
uint8_t dns_2nd[4]=;//定義乙個備用的dns
uint8_t domain_name="www.baidu.com";//網域名稱
uint8_t domain_ip[4]=;//存放dns返回的網域名稱對應的ip位址
void dns_test(void)
else
if ((ret != -1) && ((ret = dns_run(dns_2nd, domain_name, domain_ip))>0)) // retry to 2nd dns
else
if(ret == -1)
else
if(ret > 0)
}
dns返回值有三個:-1、0和1,如下:
/*
* @brief dns process
* @details send dns query and receive dns response
* @param dns_ip : dns server ip
* @param name : domain name to be queryed
* @param ip_from_dns : ip address from dns server
* @return -1 : failed. @ref max_domin_name is too small \n //返回-1,輸入的網域名稱太長,定義的網域名稱最大值太小
* 0 : failed (timeout or parse error)\n//返回-1,超時了
* 1 : success//成功
* @note this funtion blocks until success or fail. max time = @ref max_dns_retry * @ref dns_wait_time
*/int8_t dns_run(uint8_t * dns_ip, uint8_t * name, uint8_t * ip_from_dns);
呼叫dns_test()函式,進行dns測試,向2個dns查詢www.baidu.com的ip位址。
void w5500_chipinit(void)
STM32 W5500 MQTT使用記錄
第一次嘗試寫部落格,不為別的,為了積累一些知識和記錄下使用的遇到的問題。1.實現mqtt協議,要基於tcpip協議,則首先要能正確的使用w5500 並配置成客戶端,可以正常的鏈結伺服器並傳輸資料,關於w5500的使用,還在學習中,現在除錯是基於原來的工程,所以省了很多時間除錯。只是學習的如何寫客戶端...
基於STM32的串列埠通訊
序列通訊一般是以幀格式傳輸資料,即一幀一幀的傳輸,每一幀都含有起始訊號,資料資訊以及停止資訊等。資料各個位同時傳輸,速度快,但是占用引腳資源多。eg led1602 資料按位順序傳輸,占用引腳資源少,但是速度相對較慢。一位一位傳輸 bit iic spi 串列埠通訊 單工,半雙工,全雙工 同步通訊 ...
基於STM32的恆流源設計
本設計以stm32f103rct6為主控晶元,利用mos管的恆流區特點,設計恆流源。設計電流範圍為1 300ma。基本原理圖 q2為n溝道mos管,在正常工作情況下,運放與mos管之間構成深度負反饋,使得輸入控制電壓與vr虛短,近似相等。這可以得到負載電流 3.1.電源 電路圖如圖所示 電源由 12...