簡體   English   中英

發現WiFi直接服務 - Windows <=> Android

[英]Discover WiFi Direct Services - Windows <=> Android

長話短說

我試圖使用WiFi直接服務從Windows 10計算機中發現(Android)設備 - 但在我看來,Windows和Android不同意這里的標准。

當我編寫Wifi Direct Services或Wifi Direct Advertisement時,我的意思是支持WiFi Direct的設備可以廣播它提供的服務,因此潛在的對等方可以在進行任何連接之前掃描可用的設備/服務。

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

我試過的細節

所以我一直在研究這個問題,搜索文檔和示例。

Android < - > Android

使用Android的這個Service Discovery示例 ,我已經成功地讓兩個Android設備找到彼此,並在任何實際的WiFi Direct連接之前列出他們的可用服務。

它的工作方式是想要查找其他設備(服務)的設備將廣播探測請求。 然后,發布服務的設備將查看這些探測請求並使用探測答案進行響應。 探測答案包括Bonjour(類似)信息,通知第一個設備有關可用服務的信息。 這是(類似於)主動掃描。

進入Windows 10

我一直在玩微軟的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/中刪除,並且它有點偏離了良好的路徑,因為最受歡迎的庫是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM