ESP8266 SDK開發: 網絡篇-TCP服務器(espconn) (NONOS 2.2.0)


 

 

 

前言

關於網絡通信:

每一台電腦都有自己的ip地址,每台電腦上的網絡應用程序都有自己的通信端口,

張三的電腦(ip:192.168.1.110)上有一個網絡應用程序A(通信端口5000),

李四的電腦(ip:192.168.1.220)上有一個網絡應用程序B(通信端口8000),

張三給李四發消息,首先你要知道李四的ip地址,向指定的ip(李四ip:192.168.1.220)發信息,

信息就發到了李四的電腦。

再指定一下發送的端口號(通信端口8000),信息就發到了李四電腦的網絡應用程序B上。

TCP--一種網絡通信方式而已。分為服務器(網絡應用程序)和客戶端(網絡應用程序).

 

1.包含以下頭文件

 

 

 

#include  "espconn.h"
#include  "mem.h"

 

 

 

2.定義espconn

 

 

 

struct espconn TcpServer;//TCP連接配置的結構體
struct espconn *TCPSendDate = NULL;//記錄客戶端socket

 

 

3.配置下 TCPServer

 

 

 

 

    espconn_init();//初始化
    TcpServer.type = ESPCONN_TCP;     //創建TCP
    TcpServer.state = ESPCONN_NONE;   //一開始的狀態
    TcpServer.proto.tcp = (esp_tcp *)os_malloc(sizeof(esp_tcp));

    TcpServer.proto.tcp->local_port = 8080;//監聽的端口號
    espconn_regist_connectcb(&TcpServer, TcpServerListen);//注冊監聽函數
    espconn_accept(&TcpServer);//啟動監聽

 

 

 

 

 

4.在監聽函數中注冊其它函數

 

 

 

 

void   TcpServerRecv(void *arg, char *pusrdata, unsigned short length){
    TCPSendDate = arg;
    tx_buff_enq(pusrdata,length);//串口打印接收的數據
}

void   TcpServerDisCon(void *arg){

}
void   TcpServerReCon(void *arg, sint8 err){

}


void   TcpServerListen(void *arg)
{
    TCPSendDate = arg;
    struct espconn *pesp_conn = arg;
    espconn_regist_recvcb(pesp_conn, TcpServerRecv);
    espconn_regist_disconcb(pesp_conn, TcpServerDisCon);
    espconn_regist_reconcb(pesp_conn, TcpServerReCon);
}

 

 

5.測試(手機APP連接測試)

 

1手機APP連接模塊無線

 

 

 

2 使用手機APP調試助手測試

安裝調試助手

 

點擊左上角菜單

 

 

 

 

 

點擊網絡通信

 

 

 

選擇 TCP/UDP通信

 

 

 

選擇TCP客戶端,IP地址192.168.4.1(8266默認IP)

端口號:8080

點擊 連接

 

 

 

 

 

 

 

 

 

 

 

6.測試(電腦上位機連接測試)

 

電腦連接8266無線

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.串口接收的數據轉發給TCP客戶端(透傳)

 

 

 

 

測試

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM