2017-06-14 94 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。 –