High Level Protokolle für Bluetooth / WiFi Direct Sockets?

8

Wenn Sie in Android mit Bluetooth oder WiFi Direct arbeiten, werden Sie am Ende des gesamten Handshaking und so weiter mit Sockets fertig.

Mit TCP / IP haben wir eine Zig-Plus-Eins-Bibliothek, die auf Sockeln aufsetzt, für High-Level-Protokolle: HTTP, XMPP, IMAP usw. Mit freundlicher Genehmigung dieser Bibliotheken können wir uns mit mehr Domänen- bestimmte Abstraktionen einer Operation (z. B. "lade diese Datei herunter"), mit Low-Level-Socket-Installationen, die von der Bibliothek behandelt werden.

Frage Gibt es Entsprechungen für ein High-Level-Protokoll, von denen bekannt ist, dass sie mit den Sockets funktionieren, die über die Bluetooth- und / oder WiFi Direct-Layer von Android hergestellt werden? / p>

Im Moment bin ich nicht pingelig in Bezug auf das spezifische Protokoll - ich suche nur nach Beispielen für diese Art von Protokollschicht, um Entwicklern die Verwendung dieser Arten von Konnektivitätsoptionen zu erleichtern.

Zum Beispiel sieht es so aus, als könnte ich ein Fork oder Add-On für OkHTTP erstellen, das eine alternative Quelle für Sockets verwendet, und ich könnte wahrscheinlich einen Java-HTTP-Server erstellen, der das Gleiche tut. Wenn man das bedenkt, würden App-Entwickler HTTP-Apps schreiben, die über Bluetooth oder WiFi Direct sprechen (und zumindest auf der Client-Seite sollte die Codierung ziemlich "natürlich" sein, sobald das verbindungsspezifische Pairing und Handshaking abgeschlossen ist).

IOW, zurückgehen auf den Umgang mit rohen Sockets fühlt sich so vor zwei Jahrzehnten ...: -)

Danke!

AKTUALISIEREN

Basierend auf Kristopher Micinskis Kommentar zu der ZeroMQ-Antwort dachte ich, dass eine Klärung in Ordnung sein könnte.

Es ist einfacher zu sagen, was ich nicht möchte : Ich möchte Sockets nicht anfassen, nachdem ich sie erstellt habe. Etwas anderes auf einer höheren Ebene sollte die für mich behandeln, plus handle, was ich als "Protokoll" bezeichnen würde (z. B. bestimmen, wann eine Kommunikationsoperation beendet wurde, über einen Socket hinaus).

Meistens ist das für mein Buch. Die meisten Buchbeispiele für Low-Level-Socket-Sachen sind unrealistisch, wie etwa "wir öffnen einen Socket für den Server und starten sofort die Bytes, die ein Bild darstellen, das hochgeladen werden soll, und schließen dann den Socket, wenn wir fertig sind". Während die Beispiele funktionieren, würden Sie im wirklichen Leben nie so etwas schreiben:

  • Wenn Sie wirklich auf der Socket-Ebene arbeiten, würden Sie ein Protokoll implementieren, das auf die Authentifizierung, die Fehlerbehandlung usw. abzielt, selbst wenn Sie das Protokoll selbst ausführen.

    >
  • Nur wenige Entwickler arbeiten heute direkt mit Sockets für Internetoperationen

Nun wäre es cool, wenn das von der Schicht angebotene Protokoll etwas wäre, an das Entwickler gewöhnt waren (z.B. HTTP) oder von dem sie gehört hatten, selbst wenn sie es nicht benutzt hatten (z.B. XMPP). Und ich werde mich für einfache Szenarien entscheiden (z. B. N-Wege-Unterstützung ist cool, aber nicht notwendig). In dieser Hinsicht ist ZeroMQ auf der Grundlage von Voruntersuchungen (durchgeführt von einem schlafarmen Gehirn) keine schlechte Wahl. Es fehlt ein bisschen "Markenerkennung" im Vergleich zu einem XMPP-Stack, der mit beliebigen Sockets arbeiten könnte. Aber aus dem Stegreif scheint es zu treffen, wonach ich noch suche.

Ich erkenne, dass diese Stapel Beschränkungen unterliegen, die durch den zugrunde liegenden Transport auferlegt werden (z.B. funktioniert Bluetooth nur für kleine Werte von N gut für N-Wege). Und ich möchte sicherlich nicht - hier oder in meinem Buch - darstellen, dass die von mir beschriebene Lösung das A und O der Socket-basierten Kommunikation ist.

Ich möchte nur etwas, das ein Gebet hat, dass es für den tatsächlichen Gebrauch realistischer ist. Bonuspunkte, wenn es etwas ist, was ich erreichen kann, da ich immer höhere Protokolle für die TCP / IP-Kommunikation verwendet habe, und deshalb habe ich wenig Erfahrung mit direkter Socket-Manipulation.

    
CommonsWare 10.06.2013, 17:11
quelle

2 Antworten

2

Ich fand ZeroMQ zur Verwaltung der Socket-Verbindung. Sie haben eine Unterstützung in mehreren Sprachen, einschließlich JAVA. Sie können damit die Sockets verwalten, sobald Sie die Verbindung über WLAN-Direct oder BT hergestellt haben.

    
Sukumar 11.06.2013, 11:18
quelle
0

Ich weiß, es ist eine etwas alte Frage und bereits beantwortet, aber ich möchte dazu beitragen.

Ich habe diese App: Ссылка und obwohl die WiFi Direct Verbindung n Handshake ist etwas kaputt und es ist, was die meisten meiner unglücklichen Benutzer verursacht, ich handle die gesamte Kommunikation mit der ausgezeichneten Ссылка

>

und mein Code ist ziemlich genau das, was Sie in ihren Beispielen sehen, kryo erstellen, Klassen registrieren, Server öffnen, Client mit Server-IP verbinden und Objekte mit den Dateiinformationen überspielen und später schieße ich die eigentlichen Dateien mit diesem Code Ссылка

hoffe es hilft.

    
Budius 11.01.2014 23:11
quelle