没有密码的无线连接上的zeroconf

zeroconf on wireless connection without password

我想在同一无线 LAN 上的 2 台设备之间设置注册/发现服务连接类型。想法是查找、连接无线路由器密码并将其发送到新设备,以便于安装。这需要在使用 SSID、密码连接到路由器之前在同一无线网络上的 2 台设备之间进行通信。

我知道 zeroconf、bonjour 和 mDNS 库。我看到的所有实现都是从以站模式连接到 wifi 开始,以获取具有硬编码 SSID 和密码的本地 IP,这在这个阶段是未知的。

换句话说,没有SSID和密码,如何连接无线并获得link本地IP?

-- 编辑以获得更好的解释--

我要找的流程是这样的:

1- 手机 phone(iphone 或 android)照常连接到安全的家庭无线网络
2- 一台带无线接口的新设备第一次开机
3- 设备为自己获取(或设置)本地 IP 和本地 dns 名称(多播 ip 和名称)
4- 设备向网络广播其可用服务
5- Phone 发现服务,以及设备的本地名称,甚至已经分配的本地 ip。
6- Phone 发起与设备的直接连接以发送无线配置信息(接入点的 ssid 和密码)
7 - 设备保存此信息,重置为正常操作模式
8 - 设备连接到互联网
9 - 设备服务在本地网络中仍然可用

--编辑--

代码将在 esp32 或 esp8266 上 运行,因此兼容的 c 或 arduino 库都可以。

我知道 ESPTouch 应用程序的 smartconfig 实现,但这是一个糟糕的设计!发现程序尝试为每个可能的 IP 地址创建套接字以找到对等 IP。

再读一遍你问题中的这句话并思考一下:

In other words, how can connect to wireless and get a link local IP without SSID and password?

你提到的协议只有在你成为网络的一部分后才有可能。如您所知,wifi 网络受到保护以防止未经授权的访问。

在 Google 中尝试 wifi 保护设置 (WPS)。