Hochwertige Protokolle für Bluetooth / WiFi Direct Sockets?

Wenn Sie mit Bluetooth oder WiFi Direct in Android arbeiten, am Ende aller Handshaking und so, Sie wind up mit Steckdosen.

Mit TCP / IP haben wir eine Zillion-plus-one-Bibliotheken, die sich auf den Sockets befinden, für High-Level-Protokolle: HTTP, XMPP, IMAP, etc. Mit freundlicher Genehmigung dieser Bibliotheken können wir uns mit mehr domänenspezifischen Abstraktionen beschäftigen Eine Operation (zB "download this file"), mit Low-Level-Socket-Sanitär von der Bibliothek behandelt.

Frage : Gibt es Äquivalente, für jedes High-Level-Protokoll, die bekannt sind, zu arbeiten (oder sind wahrscheinlich zu arbeiten) mit den Sockets, die über Android Bluetooth und / oder WiFi Direct Layer produziert werden?

Im Moment bin ich nicht wütend über das spezifische Protokoll – ich suche nur nach Beispielen dieser Art von Protokollschicht, um diese Art von Konnektivitätsoptionen für Entwickler einfacher zu machen.

Zum Beispiel sieht es so aus, als könnte ich eine Gabel oder ein 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 dasselbe macht. Angesichts dieser, App-Entwickler schreiben würde HTTP-Anwendungen, die über Bluetooth oder WiFi Direct gesprochen (und auf der Client-Seite zumindest die Codierung sollte ziemlich "natürlich" in das Gefühl, sobald die Konnektivität-spezifische Paarung und Handshake gegangen ist).

IOW, zurück zum Umgang mit rohen Sockeln fühlt sich vor zwei Jahrzehnten … 🙂

Vielen Dank!


AKTUALISIEREN

Basierend auf Kristopher Micinskis Kommentar zur ZeroMQ-Antwort, dachte ich, dass eine Klarstellung in Ordnung sein könnte.

Es ist einfacher zu sagen, was ich nicht will: Ich möchte keine Sockel berühren, nachdem ich sie erschaffen habe. Etwas anderes auf einer höheren Ebene sollte die für mich behandeln, plus behandeln, was ich ein "Protokoll" zu sein (z. B. Bestimmen, wenn einige Kommunikation Betrieb beendet ist, über einen Sockel schließen).

Meistens ist das für mein Buch. Die meisten Buchbeispiele für Low-Level-Socket-Sachen sind unrealistisch, wie zB "wir öffnen eine Sockel an den Server und beginnen sofort, die Bytes zu sprengen, die ein Bild darstellen, das hochgeladen werden soll, dann schließen Sie die Steckdose, wenn wir fertig sind". Während die Beispiele funktionieren, würdest du so etwas nicht im wirklichen Leben schreiben?

  • Wenn du wirklich auf der Sockel-Ebene arbeitest, würdest du ein Protokoll implementieren, das die Hoffnung hat, Authentifizierung, Fehlerbehandlung usw. zu adressieren, auch wenn du das Protokoll selbst rollst

  • Nur wenige Entwickler arbeiten heute direkt mit Steckdosen für Internet-Operationen

Nun wäre es cool, wenn das von der Schicht angebotene Protokoll etwas war, an das Entwickler gebraucht wurden (zB HTTP) oder schon gehört haben, auch wenn sie es nicht benutzt haben (zB XMPP). Und ich werde mich für einfache Szenarien einsetzen (zB N-Weg Unterstützung ist cool aber nicht notwendig). In dieser Hinsicht, auf der Grundlage der vorläufigen Forschung (durchgeführt von einem Schlaf-beraubt Gehirn), ZeroMQ ist keine schlechte Option. Es fehlt ein bisschen "Markenerkennung" im Vergleich zu einem XMPP-Stack, der mit beliebigen Steckdosen arbeiten könnte. Aber ab der Manschette scheint es zu treffen, was ich sonst noch suche.

Ich erkenne, dass diese Stapel Einschränkungen durch den zugrunde liegenden Transport auferlegt werden (zB Bluetooth funktioniert gut für N-Weg nur für kleine Werte von N). Und ich möchte sicherlich nicht – hier oder in meinem Buch – darlegen, dass die Lösung, die ich porträtiere, die Be-all-und end-all socket-basierte Kommunikation ist.

Ich möchte nur etwas, das ein Gebet hat, für die tatsächliche Verwendung realistischer zu sein. Bonuspunkte, wenn es etwas ist, das ich grok machen kann, da ich immer übergeordnete Protokolle für TCP / IP-Kommunikation verwendet habe, und so bin ich kurz auf Erfahrung mit direkter Socket Manipulation.

  • Wie man wifi Tethering Hotspot in Android Marshmallow erstellen?
  • Was passiert bei bestehenden Verbindungen beim Umschalten zwischen 3g / wifi
  • Android - Erkennung, wenn wifi WEP, WPA, WPA2, etc. programmgesteuert ist
  • Android: Verbinden Sie zwei Telefone drahtlos?
  • Java.net.SocketException: recvfrom fehlgeschlagen: ECONNRESET (Connection reset by peer) Über WIFI
  • Wie kann ich eine Liste von getScanResults () basierend auf Signalstärke in aufsteigender Reihenfolge sortieren?
  • Force Android 6.x Marshmallow verwenden WiFi-Verbindung auch ohne Internet-Zugang
  • Wie finde ich WiFi und Netzwerk Daten Nutzung separat von bestimmten Anwendung in Android?
  • 2 Solutions collect form web for “Hochwertige Protokolle für Bluetooth / WiFi Direct Sockets?”

    Ich habe festgestellt, dass ZeroMQ für die Verwaltung der Socket-Verbindung nützlich ist. Sie haben eine Unterstützung in mehreren Sprachen, die JAVA beinhaltet. Sie können dies verwenden, um die Steckdosen zu verwalten, sobald Sie die Verbindung über wifi-direct oder BT herstellen.

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

    Ich habe diese App: https://play.google.com/store/apps/details?id=com.budius.WiFiShoot und obwohl die WiFi Direct Verbindung n Handshake ist etwas kaputt und es ist, was verursacht die meisten meiner unglücklichen Benutzer, ich 'Umgang mit der ganzen Kommunikation mit dem ausgezeichneten https://github.com/EsotericSoftware/kryonet

    Und mein Code ist so ziemlich das, was man auf ihren Beispielen sieht, kryo erstellen, Klassen registrieren, Server öffnen, Client mit Server-IP verbinden und Objekte mit den Dateiinformationen aufnehmen und später schreibe ich die eigentlichen Dateien mit diesem Code https: // code .google.com / p / kryonet / source / browse / trunk / kryonet / test / com / esotericsoftware / kryonet / InputStreamSenderTest.java

    ich hoffe es hilft.

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.