发现 WiFi Direct 服务 - Windows <=> Android
Discover WiFi Direct Services - Windows <=> Android
长话短说
我正在尝试使用 WiFi Direct 服务从 Windows 10 台计算机发现 (Android) 台设备 - 但在我看来 Windows 和 Android不同意这里的标准。
当我写 Wifi Direct 服务或 Wifi Direct 广告时,我指的是支持 WiFi Direct 的设备可以广播它提供的服务的功能,因此潜在的对等方可以在建立任何连接之前扫描可用的设备/服务。
有没有人在 Windows-Android 差距上取得过成功?
我尝试过的详细信息
所以我一直在做这方面的工作,搜索文档和示例。
Android <-> Android
使用这个 Service Discovery example for Android,我已经成功地让两个 Android 设备在建立任何实际的 WiFi Direct 连接之前找到彼此并列出它们的可用服务。
它的工作方式是,一个想要寻找其他设备(服务)的设备会广播探测请求。发布服务的设备随后将看到这些探测请求并以探测答案进行响应。探测答案包括 Bonjour(类似)信息,通知第一个设备有关可用服务的信息。这是(类似于)主动扫描。
输入Windows10
我一直在玩 Microsoft 的 WiFi Direct Services 示例项目(和其他项目)- 但没有取得巨大成功。 Windows 能够看到 Android 台设备,但是
- 仅如果Android设备处于服务发现模式(即发送探测请求)
- Windows只能看到设备,不能它提供的服务。
基本上我的结论(有点猜测)是 Windows 10 使用被动扫描,因此(错误地?)对 Android 设备的探测请求做出反应(当 Windows 实际上应该自己发出探测请求并对探测响应做出反应)。
所以,真正的问题
我无法形成一个清晰的问题,抱歉,但是
- 有人在 Android 和 Windows 之间成功发现服务了吗?
- 有人了解 Windows (10) 在这里的工作原理吗?可以让Windows使用主动扫描方式和解析服务公告吗?
- 非常感谢对我有帮助的其他提示:-)
我在 Windows 端使用 Apple Bonjour 服务器 运行 完成了此操作(Bonjour == Apple 的零配置网络实现)。
问题是我不得不使用 Mono.Zeroconf 库来完成它 http://www.mono-project.com/archived/monozeroconf/,而且它有点偏离常规路径,因为 [=20] 上最流行的库=] 方仅是客户端,不允许注册为服务提供商。此外,更令人惊讶的是,当我找到该项目的源代码时,它最近并没有被重新编译。虽然它有效——我只需要重新编译它就可以让它与 .Net46 一起工作。
无论如何,操作要点是 Android 的网络服务发现与 ZeroConf 可互操作,因为它们都是基于 DNS-SD 的,在发现大多数 android 设备不进行多播
仅供发现此问题的人参考,您链接的 Windows API 使用名为 Wi-Fi 对等服务的 Wi-Fi 联盟标准(P2Ps) 用于探测请求和响应中的服务发现。当探测请求帧中包含匹配的哈希值时,将通过探测响应帧公布和发现服务。这些服务也可以通过 P2P 类型的 ANQP/GAS 个帧被发现。
AndroidAPI 使用 Wi-Fi 联盟 Wi-Fi 点对点 (P2P) 标准中定义的服务发现。这是一种早于 P2P 的服务发现形式。它使用 Bonjour 或 UPnP 类型的 ANQP/GAS 帧。
这两种方法均有效且基于标准,但彼此不兼容。您(可能)最接近兼容性的方法是使用 Wi-Fi Direct 并且没有服务发现(您基本上只能在发现时看到设备名称,而不是 "service")。
Windows 样本:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WiFiDirect
Android 样本:https://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html
长话短说
我正在尝试使用 WiFi Direct 服务从 Windows 10 台计算机发现 (Android) 台设备 - 但在我看来 Windows 和 Android不同意这里的标准。
当我写 Wifi Direct 服务或 Wifi Direct 广告时,我指的是支持 WiFi Direct 的设备可以广播它提供的服务的功能,因此潜在的对等方可以在建立任何连接之前扫描可用的设备/服务。
有没有人在 Windows-Android 差距上取得过成功?
我尝试过的详细信息
所以我一直在做这方面的工作,搜索文档和示例。
Android <-> Android
使用这个 Service Discovery example for Android,我已经成功地让两个 Android 设备在建立任何实际的 WiFi Direct 连接之前找到彼此并列出它们的可用服务。
它的工作方式是,一个想要寻找其他设备(服务)的设备会广播探测请求。发布服务的设备随后将看到这些探测请求并以探测答案进行响应。探测答案包括 Bonjour(类似)信息,通知第一个设备有关可用服务的信息。这是(类似于)主动扫描。
输入Windows10
我一直在玩 Microsoft 的 WiFi Direct Services 示例项目(和其他项目)- 但没有取得巨大成功。 Windows 能够看到 Android 台设备,但是
- 仅如果Android设备处于服务发现模式(即发送探测请求)
- Windows只能看到设备,不能它提供的服务。
基本上我的结论(有点猜测)是 Windows 10 使用被动扫描,因此(错误地?)对 Android 设备的探测请求做出反应(当 Windows 实际上应该自己发出探测请求并对探测响应做出反应)。
所以,真正的问题
我无法形成一个清晰的问题,抱歉,但是
- 有人在 Android 和 Windows 之间成功发现服务了吗?
- 有人了解 Windows (10) 在这里的工作原理吗?可以让Windows使用主动扫描方式和解析服务公告吗?
- 非常感谢对我有帮助的其他提示:-)
我在 Windows 端使用 Apple Bonjour 服务器 运行 完成了此操作(Bonjour == Apple 的零配置网络实现)。
问题是我不得不使用 Mono.Zeroconf 库来完成它 http://www.mono-project.com/archived/monozeroconf/,而且它有点偏离常规路径,因为 [=20] 上最流行的库=] 方仅是客户端,不允许注册为服务提供商。此外,更令人惊讶的是,当我找到该项目的源代码时,它最近并没有被重新编译。虽然它有效——我只需要重新编译它就可以让它与 .Net46 一起工作。
无论如何,操作要点是 Android 的网络服务发现与 ZeroConf 可互操作,因为它们都是基于 DNS-SD 的,在发现大多数 android 设备不进行多播
仅供发现此问题的人参考,您链接的 Windows API 使用名为 Wi-Fi 对等服务的 Wi-Fi 联盟标准(P2Ps) 用于探测请求和响应中的服务发现。当探测请求帧中包含匹配的哈希值时,将通过探测响应帧公布和发现服务。这些服务也可以通过 P2P 类型的 ANQP/GAS 个帧被发现。
AndroidAPI 使用 Wi-Fi 联盟 Wi-Fi 点对点 (P2P) 标准中定义的服务发现。这是一种早于 P2P 的服务发现形式。它使用 Bonjour 或 UPnP 类型的 ANQP/GAS 帧。
这两种方法均有效且基于标准,但彼此不兼容。您(可能)最接近兼容性的方法是使用 Wi-Fi Direct 并且没有服务发现(您基本上只能在发现时看到设备名称,而不是 "service")。
Windows 样本:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WiFiDirect
Android 样本:https://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html