[英]Discover WiFi Direct Services - Windows <=> Android
我試圖使用WiFi直接服務從Windows 10計算機中發現(Android)設備 - 但在我看來,Windows和Android不同意這里的標准。
當我編寫Wifi Direct Services或Wifi Direct Advertisement時,我的意思是支持WiFi Direct的設備可以廣播它提供的服務,因此潛在的對等方可以在進行任何連接之前掃描可用的設備/服務。
有沒有人在Windows-Android差距中取得任何成功?
所以我一直在研究這個問題,搜索文檔和示例。
使用Android的這個Service Discovery示例 ,我已經成功地讓兩個Android設備找到彼此,並在任何實際的WiFi Direct連接之前列出他們的可用服務。
它的工作方式是想要查找其他設備(服務)的設備將廣播探測請求。 然后,發布服務的設備將查看這些探測請求並使用探測答案進行響應。 探測答案包括Bonjour(類似)信息,通知第一個設備有關可用服務的信息。 這是(類似於)主動掃描。
我一直在玩微軟的WiFi Direct Services示例項目(和其他人) - 但沒有取得巨大成功。 Windows可以看到Android設備但是
基本上我的結論(有點猜測)是Windows 10使用被動掃描,因此(錯誤地?)對Android設備的探測請求作出反應(當Windows實際上應該自己發出探測請求並對探測響應做出反應時)。
我很難形成一個明確的問題,抱歉,但是
我使用在Windows端運行的Apple Bonjour服務器(Bonjour == Apple的零配置網絡實現)完成了這項工作。
問題是,我不得不使用Mono.Zeroconf庫將其從http://www.mono-project.com/archived/monozeroconf/中刪除,並且它有點偏離了良好的路徑,因為最受歡迎的庫是Windows端只是客戶端,不允許注冊為服務提供商。 此外,作為一個額外的驚喜,當我找到它時,這個項目的來源最近沒有被重新編譯。 它工作正常 - 我只需重新編譯它以使其與.Net46一起工作。
無論如何,操作點是Android的網絡服務發現可與ZeroConf互操作,因為它們都是基於DNS-SD的,我發現大多數Android設備不做MultiCasting后我對結果非常滿意
對於發現此問題的任何人來說,只是針對某些情況,您鏈接的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.