藍牙配網:
顧名思義,通過藍牙給WIFI配網,程序相對較為簡單,首先設備上具有WIFI和藍牙兩種功能,然后通過手機的小程式或者APP連接產品藍牙,連接之后發送WIFI連接所需要的SSID和PASSID,產品接收到藍牙資訊后,產品WIFI通過SSID和PASSID去進行WIFI的連接,
流程示意圖:
WIFI自身配網:
此程序也比較簡單,首先設定當前WIFI為AP+STA模式,然后通過手機的小程式或者APP連接上產品在AP模式下的WIFI,連接之后發送產品需要連接的WIFI的SSID和PASSID,產品接收到SSID和PASSID資訊后,產品WIFI通過SSID和PASSID去進行WIFI的連接,
流程示意圖:
SmartConfig一鍵配網:
1、手機的APP或者小程式先連接上一個現場的局域網網路也就是一個WIFI,
2、被配網的設備需要開啟混雜模式,混雜模式又叫偷聽模式,允許節點接收它能偵聽到的所有資料包,
3、手機的APP或者小程式通過連接的局域網WIFI,進行UDP資料的廣播或者組播進行一個回圈發送,資料包里面包含了需要連接WIFI的SSID和PASSID,
4、被配網的設備通過 UDP 包(長度)獲取配置資訊捕捉到 需要連接WIFI的SSID和PASSID,最后連接路由器,(廣播根據 UDP 包長度,組播根據 IP 地址資訊)
流程示意圖:
知識擴展:
1、TCP和UDP連接程序:
TCP編程的服務器端一般步驟是:
1、創建一個socket,用函式socket();
2、設定socket屬性,用函式setsockopt(); * 可選
3、系結IP地址、埠等資訊到socket上,用函式bind();
4、開啟監聽,用函式listen();
5、接收客戶端上來的連接,用函式accept();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連接;
8、關閉監聽;TCP編程的客戶端一般步驟是:
1、創建一個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、系結IP地址、埠等資訊到socket上,用函式bind();* 可選
4、設定要連接的對方的IP地址和埠等屬性;
5、連接服務器,用函式connect();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連接;
UDP編程的服務器端一般步驟是:
1、創建一個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、系結IP地址、埠等資訊到socket上,用函式bind();
4、回圈接收資料,用函式recvfrom();
5、關閉網路連接;UDP編程的客戶端一般步驟是:
1、創建一個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、系結IP地址、埠等資訊到socket上,用函式bind();* 可選
4、設定對方的IP地址和埠等屬性;
5、發送資料,用函式sendto();
6、關閉網路連接;2、單播、廣播、組播
1、單播:單臺主機與單臺主機之間的通信;
2、廣播:單臺主機與網路中所有主機的通信;
3、組播(多播):單臺主機與選定的一組主機的通信;
多播首先要知道的是只有UDP有多播,沒有TCP多播,因為多播的重點是高效的把同一個包盡可能多的發送到不同的,甚至可能是未知的設備,但是TCP連接可能要求丟包重發或者延時或重組順序,這些操作可能非常消耗資源,不適于許多使用多播的應用場景,(同時多播不知道發出的包是不是已經到達,這個也導致不能使用TCP),
同樣廣播也是屬于UDP,TCP屬于端對端的通信,通信要求比較嚴格,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/312206.html
標籤:其他



