2012-07-30 6 views
9

Ist es möglich, ein Android (> 4.0) -Gerät eine WiFi-Direct-Verbindung mit einem Mac OS oder Windows-Gerät herstellen zu lassen?WiFi-Direkte Kommunikation zwischen Mac/Windows und Android

+0

mögliche Duplikate von [Broadcast-Nachricht von Desktop-PC zu Android-Gerät mit WIFI-Konnektivität] (http://stackoverflow.com/questions/6757665/broadcast-message-from-desktop-pc-to-android-device-using-using- Wifi-Konnektivität) – slayton

+0

ist nicht WiFi Direct, aber perfekt, um Inhalte von Android mit ihm zu teilen: [Teilen über HTTP | F-Droid - Kostenloses und Open Source Android App Repository] (https://f-droid.org/en/packages/com.MarcosDiez.shareviahttp/) – eapo

Antwort

5

Nach dem Wifi-Direct Docs das Protokoll erlaubt:

Android 4.0 (API-Ebene 14) oder höher Geräte mit der entsprechenden Hardware direkt über Wi-Fi miteinander

verbinden

Es spielt keine Sieht so aus, als ob Google diese Funktionalität über die API bereitstellt. Obwohl WiFi-Direct kein proprietäres Protokoll ist, könnte es für jede Plattform implementiert werden. Es gibt ein paar Beiträge rund um das Web von Menschen, die versuchen Wifi-Direct zu bekommen unter Windows zu arbeiten:

-6

Alles, was Sie brauchen, ist java.net.Socket verwenden. Hängt davon ab, was du meinst, indem du direkte Verbindung herstellst. Die TCP-Verbindung wird hergestellt, wenn Sie auf dem Zielgerät (Windows oder Mac) den Listening-Socket von ServerSocket öffnen. Auf einem anderen Gerät können Sie Socket mit Zieladresse verwenden. Natürlich muss Windows oder Mac Box diesen Port in der Firewall öffnen.

Ich denke, was Sie eigentlich wissen müssen, ist, wie Name des Zielcomputers oder wie Computer im lokalen Netzwerk zu entdecken. Leider hängt es nicht von Android-Version, denke ich. Sie sollten http://en.wikipedia.org/wiki/Zero_configuration_networking über einige Hinweise überprüfen. Ich befürchte, es könnte ein Problem in der Notwendigkeit sein, privilegierten Port auf Android zu öffnen, da normalerweise root dafür sein muss. Und das würde gerootet Android benötigen.

Natürlich sollten Sie angeben, was Sie mit dieser direkten Verbindung beabsichtigen und welche Software Sie benötigen. Wenn beide Enden Ihre Anwendung haben, können Sie einfach alle nicht zugewiesenen und nicht privilegierten Port auf Android öffnen. Verwenden Sie UDP, um den Namen des Android-Geräts in regelmäßigen Abständen zu übertragen (möglicherweise wird der Benutzer aufgefordert, den Namen seines Geräts einzugeben). Verwenden Sie Multicast, um Anfragen zu senden und Antworten auf die gleiche Weise zu erhalten. Multicast senden und empfangen würde Ihre Anwendung auf Android und auf Windows und Mac auch benötigen. Jetzt können Sie von der Multicast-Anwendung lesen, um welchen Maschinentyp es sich handelt und welchen lokalen Port es für Ihre direkte Verbindung offen gelassen hat. Von der Quelle der UDP-Nachricht wissen Sie, wo Sie sich verbinden müssen.

Sie können ein Framework verwenden, um die Dinge zu beschleunigen. All dies erfordert ein gewisses Wissen über Netzwerke, aber ich kenne keine einfachere und funktionierende Lösung. Es sei denn, Sie geben Details darüber an, was Ihre direkte Verbindung zu tun hat.

+0

Der Socket muss nur bei bestehender WiFi-Direct-Verbindung eingerichtet werden . Und darum bitte ich, nicht um die Socket-Verbindung. –

+0

Das OP fragt nicht, wie man eine TCP-ähnliche Verbindung in einem bereits bestehenden Netzwerk einrichtet. Vielmehr möchte das OP wissen, wie man mit dem WiFi-Direct-Protokoll eine neue Netzwerkverbindung zwischen einem Computer und einem Android-Gerät herstellen kann. – slayton

Verwandte Themen