Espressif(樂鑫)除了提供網路註冊回調函數(Registeredd Callback Function)和回網路調函數(Callback Function)外,還有是提供完整網路介面函數,稱為 ESPCONN 網路介面(ESPCONN Network API),當要 ESP8266 連接網路時,不管是使用 TCP 或 UDP 來收發數據,都會使用 ESPCONN 介面函數,而 ESPCONN 的網路函數是儲存在 ESP8266_NONOS_SDK/include/espconn.h。
ESPCONN 網路通用介面函數 |
- 通用接口:TCP 和 UDP 均可以調用的接口。
- TCP APIs:僅建立 TCP 連接時,使用的接口。
- UDP APIs:僅收發 UDP 包時,使用的接口。
- mDNS APIs:mDNS 相關接口。
ESPCONN 通用介面函數(ESPCONN General Network API):
- espconn_delete
- espconn_gethostbyname
- espconn_port
- espconn_get_connection_info
- espconn_send
- espconn_sent
espconn_delete
|
|
功能
|
刪除傳輸連接
|
函數定義
|
sint8
espconn_delete(struct espconn *espconn)
|
輸入參數
|
struct espconn
*espconn - 相應連接的控制塊結構
|
返回
|
0:成功
其他:失敗,返回錯誤碼
• ESPCONN_ARG:未找到參數 espconn 對應的網路傳輸
• ESPCONN_INPROGRESS:參數 espconn 對應的網路連接仍未斷開,請先調用 espconn_disconnect 斷開連接,再進行刪除。
|
注意
|
對應創建傳輸的接口如下:
TCP:espconn_accept
UDP:espconn_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,普通 server;1,ssl 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_IF:UDP 發包失敗
|
注意
|
• 一般情況,請在前一包資料發送成功,進入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_IF:UDP 發包失敗
|
注意
|
本接口不建議使用,建議使用 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%
天氣:大致多雲
沒有留言:
張貼留言