2017年6月5日 星期一

DIY - ESP8266:ESP8266 SDK ESPCONN 網路通用介面函數(三十)

DIY - ESP8266:ESP8266 SDK ESPCONN 網路通用介面函數(三十):

Espressif(樂鑫)除了提供網路註冊回調函數(Registeredd Callback Function)和回網路調函數(Callback Function)外,還有是提供完整網路介面函數,稱為 ESPCONN 網路介面(ESPCONN Network API),當要 ESP8266 連接網路時,不管是使用 TCP 或 UDP 來收發數據,都會使用 ESPCONN 介面函數,而 ESPCONN 的網路函數是儲存在 ESP8266_NONOS_SDK/include/espconn.h。

ESPCONN 網路通用介面函數
ESP8266 網路相關接口可分為以下幾類: 
  1. 通用接口:TCP 和 UDP 均可以調用的接口。 
  2. TCP APIs:僅建立 TCP 連接時,使用的接口。 
  3. UDP APIs:僅收發 UDP 包時,使用的接口。 
  4. mDNS APIs:mDNS 相關接口。 
 
ESPCONN 通用介面函數(ESPCONN General Network API): 
  1. espconn_delete 
  2. espconn_gethostbyname 
  3. espconn_port 
  4. espconn_get_connection_info 
  5. espconn_send 
  6. espconn_sent 

espconn_delete
功能
刪除傳輸連接
函數定義
sint8 espconn_delete(struct espconn *espconn)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
返回
0:成功
其他:失敗,返回錯誤碼
ESPCONN_ARG:未找到參數 espconn 對應的網路傳輸
ESPCONN_INPROGRESS:參數 espconn 對應的網路連接仍未斷開,請先調用 espconn_disconnect 斷開連接,再進行刪除。
注意
對應創建傳輸的接口如下:
TCPespconn_accept
UDPespconn_create

espconn_gethostbyname
功能
DNS 域名解析
函數定義
err_t espconn_gethostbyname(struct espconn *pespconn, const char *hostname, ip_addr_t *addr, dns_found_callback found)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
const char *hostname - 域名 string 指針
ip_addr_t *addr - ip 地址
dns_found_callback found - 回調
返回
err_t
ESPCONN_OK:成功
ESPCONN_ISCONN:失敗,錯誤碼含義:已經連接
ESPCONN_ARG:失敗,錯誤碼含義:未找到參數 espconn 對應的網路傳輸

espconn_port
功能
獲取未使用的端口
函數定義
uint32 espconn_port(void)
輸入參數
返回
uint32 - 獲取的端口號

espconn_ get_connection_info
功能
查詢某個 TCP 連接或者 UDP 傳輸的遠端資訊。一般在espconn_recv_callback 中調用
函數定義
sin8 espconn_get_connection_info (struct espconn *espconn, remote_info **pcon_info, uint8 typeflag)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
remote_info **pcon_info - 連接 client 的資訊
uint8 typeflag - 0,普通 server1ssl server
返回
0:成功
其他:失敗,返回錯誤碼 ESPCONN_ARG:未找到參數 espconn 對應的 TCP 連接

espconn_send
功能
通過 WiFi 發送資料
函數定義
sint8 espconn_send(struct espconn *espconn, uint8 *psent, uint16 length)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
uint8 *psent - sent 數據指標
uint16 length - sent 數據長度
返回
0:成功
其他:失敗,返回錯誤碼
ESPCONN_ARG:未找到參數 espconn 對應的網路傳輸
ESPCONN_MEM:空間不足
ESPCONN_MAXNUM:底層發包緩存已滿,發包失敗
ESPCONN_IFUDP 發包失敗
注意
• 一般情況,請在前一包資料發送成功,進入espconn_sent_callback 後,再調用 espconn_send 發送下一包資料。
• 如果是 UDP 傳輸,請在每次調用 espconn_send 前,設置espconn->proto.udp->remote_ip remote_port 參數,因為 UDP 無連接,遠端資訊可能被更更改。

espconn_sent
功能
通過 WiFi 發送資料
函數定義
sint8 espconn_sent(struct espconn *espconn, uint8 *psent, uint16 length)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
uint8 *psent - sent數據指標
uint16 length - sent數據長度
返回
0:成功
其他:失敗,返回錯誤碼
ESPCONN_ARG:未找到參數 espconn 對應的網路傳輸
ESPCONN_MEM:空間不足
ESPCONN_MAXNUM:底層發包緩存已滿,發包失敗
ESPCONN_IFUDP 發包失敗
注意
本接口不建議使用,建議使用 espconn_send 代替。
•一般情況,請在前一包資料發送成功,進入espconn_sent_callback 後,再調用 espconn_send 發送下一包資料。
•如果是 UDP 傳輸,請在每次調用 espconn_send 前,設置espconn->proto.udp->remote_ip remote_port 參數,因為 UDP 無連接,遠端資訊可能被更更改。

2017年 6月 5日 天氣報告
氣溫:29.3@ 20:20
相對濕度:百分之 81%
天氣:大致多雲

沒有留言:

張貼留言