我正在尝试使用WiFi直接服务从Windows 10计算机中发现(Android)设备 - 但在我看来,Windows和Android不同意这里的标准。
当我编写Wifi Direct Services或Wifi Direct Advertisement时,我的意思是支持WiFi Direct的设备可以广播它提供的服务,因此潜在的对等方可以在进行任何连接之前扫描可用的设备/服务。
在Windows-Android差距中,有没有人取得任何成功?
所以我一直在研究这个问题,搜索文档和示例。
使用此Service Discovery example for Android,我已经成功地让两个Android设备找到彼此,并在任何实际的WiFi Direct连接之前列出他们的可用服务。
它的工作方式是想要查找其他设备(服务)的设备将广播探测请求。然后,发布服务的设备将查看这些探测请求并使用探测答案进行响应。探测答案包括Bonjour(类似)信息,通知第一个设备有关可用服务的信息。这是(类似于)主动扫描。
我一直在玩微软的WiFi Direct Services示例项目(和其他人) - 但没有取得巨大成功。 Windows可以看到Android设备,但
基本上我的结论(有点猜测)是Windows 10使用被动扫描,因此(错误地?)对Android设备的探测请求做出反应(当Windows实际上应该自己发出探测请求并对探测响应做出反应时)
我很难形成一个明确的问题,抱歉,但是
答案 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