2017-06-14 89 views
0

我想在同一無線局域網上的兩臺設備之間建立一個註冊/發現類型的服務連接。想法是找到,連接併發送無線路由器密碼到一個新的設備,以方便安裝。這需要在連接到具有SSID,密碼的路由器之前在同一無線網絡上的兩個設備之間進行通信。zeroconf無線連接無密碼

我知道zeroconf,bonjour和mDNS庫。我看到的所有實現都以站模式連接到wifi開始,以獲得具有硬編碼SSID和密碼的本地IP,但在此階段尚不知道。

換句話說,如何連接到無線並獲得鏈接本地IP沒有SSID和密碼?

- 編輯爲更好的解釋 -

我要找的流量是這樣的:

1-手機(iPhone或Android)連接到安全的家庭無線網絡通常
2-帶有無線接口的新設備第一次通電。
3-設備獲取(或設置)爲自己的本地IP和本地DNS名稱(IP組播和名稱)
4-設備到
5-電話發現的服務,與設備一起網絡廣播其提供的服務本地名稱,甚至本地IP已經分配。
6-電話發起與設備的直接連接來發送無線配置信息(在接入點的SSID和密碼)
7 - 設備保存該信息,則復位到正常操作模式
8 - 設備連接到互聯網
9 - 設備提供服務仍然提供本地網絡

- 修改 -

代碼將在esp32或esp8266運行,因此兼容C或Arduino的庫都OK。

我知道ESPTouch應用程序的smartconfig實現,但它是一個可怕的設計!發現程序嘗試爲每個可能的IP地址創建套接字以查找對等IP。

回答

0

再讀一遍這句話在你的問題,想一想:

換句話說,如何可以連接到無線和獲得一個鏈接本地IP 沒有SSID和密碼?

你提到的協議只有在你是網絡的一部分後纔可能。如您所知,無線網絡受到保護以防止未經授權的訪問。

嘗試在Google中使用無線網絡受保護的設置(WPS)。

+1

不正確。我知道你可以發送和接收UDP數據包,進行p2p套接字通信等,即使在通過無線路由器連接ssid和密碼之前。這就是ESPTouch如何將ssid,pwd信息傳輸到網絡中的其他設備。 –

+0

經過廣泛的研究,我發現你幾乎完全正確!沒有正式的協議允許設備在與網絡進行認證之前進行通信。ESPTouch和SmartConfig正在做的事情實際上是嗅探網絡併發布用包裝尺寸表達的信息!這是一個很好的文章: –

+0

[鏈接](http://depletionregion.blogspot.com.tr/2013/10/cc3000-smart-config-transmitting-ssid.html) 這不是一個最佳實踐,我放棄!發送無線配置的最佳方式似乎是通過藍牙或USB。 –