Wie bekomme ich die IP-Adresse jedes Geräts im Wi-Fi Direct-Szenario?
Ab ICS, Wi-Fi Direct eingeführt. In der Regel verwenden wir die WifiP2pManager
- Klasse zu bedienen, über Wi-Fi Direct, aber es scheint, dass es nur abrufen der GroupOwner IP-Adresse nach verbunden. Aber eigentlich ist jedes Gerät alle kamen zu verhandeln, um sich die GroupOwner. In Ober-Anwendung, die wir brauchen, um die peer-IP-Adresse, oder jeder peer die IP-Adresse in einer Gruppe, so dass wir senden können/mit Ihnen zu kommunizieren.
Wie man jede IP-Adresse in Wi-Fi-Direct? Eigene IP-Adresse und jeder peer in der Gruppe?
InformationsquelleAutor der Frage nicefuture | 2012-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem. Da beide Geräte wissen, die Gruppe des Besitzers der ip ist es bereits möglich, eine Nachricht zu senden, um den Besitzer der Gruppe. Die erste Nachricht, die Sie senden können, enthalten die ip-Adresse des anderen Geräts; ab dann ist eine bidirektionale Kommunikation möglich ist.
Hier ist eine Möglichkeit für das abrufen Ihrer ip-in-java:
Wickeln diese ip in einem Serialisierbaren Objekt und senden Sie es an den Besitzer der Gruppe, wie Sie schicken würde jedes andere Objekt. Betrachten dies der erste Schritt in Ihrem wifi-direct Protokoll... Nun, den Besitzer der Gruppe hat auch eine IP zum senden von Antworten an.
Dies funktioniert für mich, obwohl ich denke, es ist seltsam, dass ich hatte, um dies zu implementieren, mich und ich konnte nur den Besitzer der Gruppe ip-leicht (info.groupOwnerAddress.getHostAddress(); //aus info ein WifiP2pInfo Instanz). Vielleicht gibt es eine vergleichbare Methode zum abrufen der ip des anderen peers, aber ich konnte ihn nicht finden. Bitte Kontaktieren Sie mich, wenn Sie tun.
Glück...
InformationsquelleAutor der Antwort Mano
Die beste Antwort, die Sie bekommen können, ist vielleicht die, die von Mano:
Hier ist, wie ich es umgesetzt. Wenn ich einen client verbinden, um den Besitzer der Gruppe über WiFi-Direkt, erhalte ich die Gruppe des Besitzers der ip-Adresse und senden Sie eine Nachricht an den Besitzer der Gruppe über einen socket. So etwas wie:
Wissen Sie bereits mIP (die Gruppe des Besitzers der IP-Adresse), und nur die haben zu entscheiden, eine mPort und erhalten die Verbindung auf den Besitzer der Gruppe wie dieser:
Dies ist der eigentliche code, den ich verwende. Ich werde zu ersetzen, diese Nachricht mit ein paar nützlichen Infos, wie ein message-Objekt enthält die MAC des Absenders, die verwendet werden können, um wissen über MAC-IP-Beziehungen, da WifiP2pDevice nur MAC und InetAddress die IP - (weiß jemand, ob es einen Weg gibt, um die MAC von einer InetAddress Objekt?)
InformationsquelleAutor der Antwort Guillermo
Ich habe eine demo-Projekt, das in der Lage ist, jedes Gerät ip und senden von Daten von einem Gerät zu einem anderen (der Besitzer der Gruppe ist oder nicht). Die url ist:
https://github.com/ahmontero/wifi-direct-demo
Ich hoffe es hilft dir!
EDIT: im Grunde suchen Sie die IP-Adresse im ARP-cache wie diesem:
InformationsquelleAutor der Antwort ahmontero
Habe ich in der Lage zu verbinden und senden in beide Richtungen in einer WiFi-direct-Netzwerk.
Alle Geräte wissen, die Gruppe des Besitzers der IP-Adresse. Wir bekommen die peer-IP von einem socket erstellt für die Kommunikation. Irgendwie bekommen die IP über die socket auf der server-Seite (an den Besitzer der Gruppe) hat nicht funktioniert für mich. So, ich schicke den Besitzer der Gruppe die IP der einzelnen Geräte aus, die das Gerät selbst. Um die IP einfach ein socket erstellen und binden Sie es auf einem beliebigen lokalen port und die Adresse aus, an die dieser socket und senden Sie es an die Eigentümer.
Ich habe einen UDP-socket, aber es funktioniert gut genug, mit TCP-sockets.
host
ist die Adresse von den Besitzer der Gruppe, die wir von den Verbindungs-info.InformationsquelleAutor der Antwort akhil
Habe ich einen anderen Ansatz !
Beim erstellen der Verbindung zwischen den 2 (oder mehr) Geräte, die Sie nicht festlegen können, wer der Besitzer und wer ist (sind) die Kunden.
Ist die einzige information, die Sie über das ist, wenn der BroadCast receiver angeschlossen ist, erhalten Sie ein Objekt "WifiP2pInfo".
Dieses Objekt enthalten 2 interessante infos :
Aus, dass Sie alles, was Sie brauchen !
Wenn Sie die groupOwner => Hören für eine Verbindung
Sonst eine Verbindung erstellen, die der Besitzer mit der ip-Adresse.
Hop kann es helfen, Sie !!!
InformationsquelleAutor der Antwort acs-team
Bitte verwenden Sie diese Methode zum abrufen der IP-Adresse.
InformationsquelleAutor der Antwort Dipendra