AirPlay 投屏设备发现稳定性:mDNS 缓存一致性问题定位与修复
背景 APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。 这次问题的现象是: 昨天 Apple 设备可以发现 APlayReceiver。 晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表…
Tags
背景 APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。 这次问题的现象是: 昨天 Apple 设备可以发现 APlayReceiver。 晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表…
背景 在把 UxPlay 的 DNS-SD/Avahi 依赖替换为内置 mDNS responder 时,PR review 里出现了一个很典型的双栈问题: 使用内置 mdnsd 时,AirPlay 客户端会先建立一个 IPv4 TCP 连接,然后很快又建立一个 IPv6 TCP 连接,前一个 IPv4 连接被替换;使用 Avahi 时,只看到 IPv6…
背景:设备发现到底是什么? AirPlay 设备发现不是"手机去扫局域网里所有 IP",而是通过 mDNS/DNS-SD 完成的。 可以把它理解成局域网里的"小广播查询": Apple 设备向 224.0.0.251:5353 或 IPv6 的 ff02::fb:5353 发 UDP 组播查询。 查询内容是"谁提供 _airplay._tcp.local…