有人在 Windows 上使用过 mDNS 做过服务发现吗?请教一个问题

57 天前
 rangerting
背景:
我家的个人设备是个杂牌军(有 Android/iOS/macOS/Windows/Linux 各种),这不 AI 编程很厉害吗,我用 AI 开发了一套工具,实现了 LAN 网络中跨平台设备的协同功能(文件传输、照片备份、文件同步、剪切板同步等等),使用了 mDNS 协议(自己基于开源库实现,未使用 Android 的 NSD 和 Apple 的 Bonjour )来解决设备自动发现的问题(避免输入 IP ,扫码啥的繁琐的操作,工具蛮,交互就要极简)。

问题:
Android/iOS/macOS/Linux 上都工作的好好的,但是在 Windows 上,时不时无法发现新设备,目前已知出现该问题时,Windows 上无法收发 mDNS 消息,必须断开网络重新链接或者重启电脑才能恢复。

补充:
21 年微软和英特尔联手解决了一个困扰多年的多播路由 bug ,其现象跟这个很像,但是已于 Windows 10 Version 21H1 修复。

问题挂了几个月了,没有进展,头疼,有没有大神弄过这玩意? 虚心请教~~~
1438 次点击
所在节点    程序员
8 条回复
yolee599
57 天前
Wireshark 抓包看看数据有没有到电脑
pagxir
57 天前
你得说你的网络环境,有线还是无线,怎么接法。加入组播组了么
rangerting
57 天前
@yolee599 @pagxir
网络环境是家庭 wifi ,5G ,环境中有:1 台 macbook pro 、1 台 huawei metabook x pro(出问题的这台,windows10 系统)、1 台 Linux 服务器、 多台 Android 设备、多台 iOS 设备。

出问题时通过抓包和 dns-sd 都进行了分析,情况:
1 、dns-sd 在 windows 上除了看到自己,看不到别人;其他设备出了 windows 外,可以相互看到。
2 、windows 抓包分析可以看到自己发起的 query 和自己的 resp ,看不到其他人的 query 和 resp 。
rangerting
57 天前
@pagxir
补充, 加入组播了
PS:提供网络设备发现能力的库,是我自己基于开源库实现的一套跨平台中间件。
yolee599
57 天前
关闭了 Windows 防火墙看看
ikas
56 天前
使用过这个库 https://github.com/mjansson/mdns 提供的 mdns 也用过 windows 内置的 mdns https://learn.microsoft.com/en-us/windows/win32/api/windns/nf-windns-dnsservicebrowse, 但都没有遇到过问题...
rangerting
56 天前
@yolee599
这也是我怀疑过的一个方向,每次出问题都检查了防火墙规则配置,没发现问题。
接下来关闭试试一段时间看,但是由于这个问题不是经常出现,估计要观察很长一段时间才行。
但是,如果后续想放出来给别人下载使用,关闭防火墙可就不可行了。
rangerting
56 天前
@ikas
你有长时间运行吗? 我的场景是 App 启动后不会关闭,responder 会一直持续运行,APP 做了休眠/唤醒的处理。
怀疑过休眠恢复处理导致了问题,但查看日志显示正常恢复,并且问题偶现,且出现问题后,所有 LAN 网络其他类型的 mdns 消息都收不到,不仅我的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1145967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX