ESP8266這個WiFi模塊即可以作爲服務器,發出WiFi供其他的客戶端連接;也可以作爲客戶端連接服務器。
接下來就簡單的演示ESP8266通過路由器連接服務器的實現,連接服務器時ESP8266使用到的指令:
- 將8266設置爲STA模式: AT+CWMODE=1
- 設置完之後重啓: AT+RST
- 8266連接路由器發出的WiFi: AT+CWJAP=”WiFi名”,”WiFi密碼”
- 啓動多連接: AT+CIPMUX=1
- 建立server: AT+CIPSERVER=1
- 通過協議、IP和端口連接服務器: AT+CIPSTART=0,”TCP”,”192.168.2.176”,10012
- 發送數據的長度: AT+CIPSEND=0,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遠程通信