发现WiFi直接服务 - Windows< =>的Android

时间:2016-10-27 14:15:57

标签: c# android windows android-wifi wifi-direct

长话短说

我正在尝试使用WiFi直接服务从Windows 10计算机中发现(Android)设备 - 但在我看来,Windows和Android不同意这里的标准。

当我编写Wifi Direct Services或Wifi Direct Advertisement时,我的意思是支持WiFi Direct的设备可以广播它提供的服务,因此潜在的对等方可以在进行任何连接之前扫描可用的设备/服务。

在Windows-Android差距中,有没有人取得任何成功?

我尝试过的详细信息

所以我一直在研究这个问题,搜索文档和示例。

Android< - >的Android

使用此Service Discovery example for Android,我已经成功地让两个Android设备找到彼此,并在任何实际的WiFi Direct连接之前列出他们的可用服务。

它的工作方式是想要查找其他设备(服务)的设备将广播探测请求。然后,发布服务的设备将查看这些探测请求并使用探测答案进行响应。探测答案包括Bonjour(类似)信息,通知第一个设备有关可用服务的信息。这是(类似于)主动扫描。

输入Windows 10

我一直在玩微软的WiFi Direct Services示例项目(和其他人) - 但没有取得巨大成功。 Windows可以看到Android设备,但

  • 如果Android设备处于服务发现模式(即发送探测请求)
  • Windows只能看到设备,它提供的服务。

基本上我的结论(有点猜测)是Windows 10使用被动扫描,因此(错误地?)对Android设备的探测请求做出反应(当Windows实际上应该自己发出探测请求并对探测响应做出反应时)

所以,实际问题

我很难形成一个明确的问题,抱歉,但是

  • 有没有人成功在Android和Windows之间进行过服务发现?
  • 有没有人对Windows(10)如何在这里工作有任何见解?我可以让Windows使用主动扫描模式解析服务公告吗?
  • 非常感谢在我的路上有所帮助的其他提示: - )

2 个答案:

答案 0 :(得分:0)

我使用在Windows端运行的Apple Bonjour服务器(Bonjour == Apple的零配置网络实现)完成了这项工作。

问题在于,我不得不使用Mono.Zeroconf库将其关闭http://www.mono-project.com/archived/monozeroconf/,并且它在很好的路径上走了一段路,因为Windows端最受欢迎的库是客户端仅限且不允许注册为服务提供商。此外,作为一个额外的惊喜,这个项目的来源最近在我找到它时没有被重新编译。虽然它有效 - 我只需重新编译它就可以使用.Net46。

无论如何,操作点是Android的网络服务发现可与ZeroConf互操作,因为它们都是基于DNS-SD的,并且在找到大多数Android设备之后我对结果非常满意并且# 39;做MultiCasting

答案 1 :(得分:0)

仅针对发现此问题的任何人的上下文,您链接的Windows API使用称为 Wi-Fi点对点服务(P2P)的Wi-Fi联盟标准进行探测中的服务发现请求和回复。当探测请求帧中包含匹配的散列时,将通过探测响应帧通告和发现服务。也可以通过P2P类型的ANQP / GAS帧发现服务。

Android API使用Wi-Fi Alliance Wi-Fi Peer-to-Peer(P2P)标准中定义的服务发现。这是一种早于P2P的服务发现形式。它使用Bonjour或UPnP类型的ANQP / GAS帧。

这两种方法都是有效的,基于标准,但它们彼此不兼容。您可以(可能)获得兼容性的最接近的是使用Wi-Fi Direct并且没有服务发现(您只能在发现时看到设备名称,而不是"服务")。

Windows示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WiFiDirect

Android示例:https://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html