基於socket通訊的物聯網程式設計

2021-08-18 06:42:30 字數 2335 閱讀 8939

搗鼓了一下午終於實現了在區域網中基於socket的物聯網通訊o(∩_∩)o!

本次使用的是nodemcu開發板,封裝了esp8266wifi模組,由於nodemcu官方推薦使用lua來寫,並且沒有統一的ide,這個就比較捉急,對比所有的開發手段,還是arduino ide配合esp8266庫來使用比較方便,免去了韌體燒錄這一步驟。

將這個位址  填寫在「附加開發板管理器**」就行了,然後到開發板管理器,即:工具->開發板->開發板管理器   在搜尋欄直接寫esp8266,然後安裝這個庫就行了。

部署好了全部的開發環境後,我們最終需要實現物聯網的通訊,但是實現方法有很多,官方提供的方法是基於web伺服器,通過http協議進行通訊,但是如果在持續傳遞大量資料的情況下,這個方法似乎有點不合適,例如我們需要用a開發板控制b開發板,此時,a中傳送的資料是連續的,不間斷的,那麼基於socket比較合理。下面就實現乙個比較簡單的socket通訊功能。

首先,要實現開發板之間的通訊,必須有服務端(server)和客戶端(client),我們先實現服務端的**:

#include //會話服務端

const char* ssid = "your_ssid";             //改為你的ssid名(wifi名稱)

const char* password = "your_wifipassword";  //你的wifi密碼

string text = "" ;

wifiserver server(80);                       //建立服務端,並且定義埠

void setup()

server.begin();

serial.println("wifi連線成功!!");

serial.print("ip-> ");

serial.print(wifi.localip());            //獲取在區域網中的ip

serial.println(); }

void loop()

serial.println("新客戶端連線進來了!");

while(client)

client.print("hello我是服務端"); //向客戶端傳送訊息

serial.print("讀到了客戶端的資料!-> ");

serial.println(text);

text = "" ;

}client.flush();

}}

以上就是服務端的部署**,具體思路:

1、我們必須需要先連線ap(access point,wifi接入節點)。

2、我們需要知道服務端在區域網中的ip,這樣客戶端才能連線它。

3、服務端必須啟動起來,當然必須監聽乙個埠才行。

4、等待客戶端接入。

5、接受客戶端傳送的資料。

6、處理資料(回發資料或者進行其他的gpio控制等操作)。

如果連線一旦中斷,那麼服務端又需要持續監聽著埠,等待下一位客戶的到訪。

客戶端實現如下:

#include //會話客戶端

const char* ssid = "your_ssid";

const char* password = "your_password";

const char* serverip = "serverip" ;        //你的服務端的ip

const int port = 80 ;                      //你的服務端開放的埠

void setup()

serial.println("wifi連線成功!!");

serial.print("ip-> ");

serial.print(wifi.localip());

serial.println(); }

void loop()

client.print("hello你好嗎我是客戶端\n");

}

以上就是客戶端的部署**,具體思路:

1、和服務端一樣需要先連線ap。

2、啟動客戶端並連線服務端,注意需要正確填寫ip和埠。

3、進行訊息傳送。

客戶端的實現相對比較簡單。

就是這個工具。

總結,本次基於socket的通訊基本能實現開發板之間的資訊互動,但是只能基於區域網中,如果在不同的網段,需要設定路由器的埠對映,如果外網沒有固定的ip,那麼就需要進行動態網域名稱解析,註冊乙個花生殼賬號(現在好像還是免費的)。後期實現物聯網的遠距離控制可能會使用到哦。

物聯網 2 物聯網通訊

本文非原創,旨在於學習物聯網相關知識。文中內容來自物聯網與短距離無線通訊技術教材,詳情可以參考下面書籍。董健 編著.物聯網與短距離無線通訊技術 第2版 電子工業出版社.2016.9 物聯網通訊 前面總結了物聯網的分層結構 端管雲架構,這裡重點對物聯網通訊進行學習。通訊是連線物聯網終端和雲端 應用層的...

基於TCP的Socket通訊

在win32平台上的winsock程式設計都要經過下列步驟 定義變數 獲得windock版本 載入winsock庫 初始化 建立套接字 設定套接字選項 關閉套接字 解除安裝winsock庫 釋放資源 1 建立乙個socket,用函式socket int socket int domain,int t...

基於tcp的socket通訊

socekt是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它 把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議 socket 基於檔案型別的套接字家...