ESP8266作爲客戶端通過路由器連接服務器的簡單實現

ESP8266這個WiFi模塊即可以作爲服務器,發出WiFi供其他的客戶端連接;也可以作爲客戶端連接服務器。

接下來就簡單的演示ESP8266通過路由器連接服務器的實現,連接服務器時ESP8266使用到的指令:

  1. 將8266設置爲STA模式: AT+CWMODE=1
  2. 設置完之後重啓: AT+RST
  3. 8266連接路由器發出的WiFi: AT+CWJAP=”WiFi名”,”WiFi密碼”
  4. 啓動多連接: AT+CIPMUX=1
  5. 建立server: AT+CIPSERVER=1
  6. 通過協議、IP和端口連接服務器: AT+CIPSTART=0,”TCP”,”192.168.2.176”,10012
  7. 發送數據的長度: AT+CIPSEND=0,8
  8. 發送數據: LayneYao

在電腦中用Java寫一個簡單的服務器程序:

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by Layne_Yao on 2018-4-23 上午9:41:59.
 * CSDN:http://blog.csdn.net/Jsagacity
 */
public class Service {
     public static void main(String[] args) throws Exception {
            // 創建服務端,指定端口爲10012
            ServerSocket server = new ServerSocket(10012);
            byte[] msg = new byte[50];
            System.out.println("服務器準備就緒.......");
            // 接收連接該服務端的客戶端對象
            Socket client = server.accept();
            //定義一個數據輸入流,接收8266發送過來的消息
            InputStream in = new DataInputStream(client.getInputStream());
            //設置成死循環,可以無限接收8266發送的數據
            boolean accept = true;
            while (accept) {
                //輸入流讀取數據
                in.read(msg);
                System.out.println(new String(msg));
            }
            in.close();
            client.close();
            server.close();
        }

}

服務器運行之後就進入線程阻塞,等待客戶端的連接。接下來就操作8266進行連接服務器:
這裏寫圖片描述

動態演示發送數據:
這裏寫圖片描述

還可以無限的發送數據,不用重新連接IP和端口。這就是8266跟服務器的長連接簡單實現,不過如果四分鐘左右沒有通信過,那麼這個長連接就會斷開,具體哪邊斷開沒有進行測試過。如果要使用長連接的就要考慮如何保活了。
這裏寫圖片描述

如果對智能家居實現還是懵懂,並且想學習的,接下來我開展一篇Chat:智能家居遠程控制,實現APP與ESP8266遠程通信

發佈了129 篇原創文章 · 獲贊 146 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章