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.

  • Beste Verwendung von HandlerThread über andere ähnliche Klassen
  • Können wir mehrere Apps in einem Android Studio Projekt haben?
  • Wie bekomme ich eine Peer-to-Peer WiFi Service Entdeckung zu arbeiten?
  • Unterstützung der Bibliotheksversion
  • Erstellen eines Drei-Staaten-Kontrollkästchens auf Android
  • Eine Taste - 3 App speichert - wie man den Benutzer zum entsprechenden Appstore umleitet?
  • 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.

  • Mehrere Karten v2 in TabActivity
  • Hinzufügen von Joda Time zu Android Studio
  • Update RecyclerView.Adapter nach Kameraabsicht
  • Ersetzen Sie die Go-Taste auf der Softtastatur mit Next in Phonegap
  • Was ist der Unterschied zwischen @ + id / android: list und @ + id / list
  • Wie kann ich Crashlytics zur Laufzeit als Antwort auf eine Benutzerpräferenzänderung deaktivieren?
  • 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.