Android で Bluetooth や WiFi Direct を使用する場合、すべてのハンドシェイクなどの最後に、ソケットが必要になります。
TCP/IP では、HTTP、XMPP、IMAP などの高レベル プロトコル用に、ソケットの上にレイヤーを重ねる無数のライブラリがあります。これらのライブラリのおかげで、よりドメイン固有の抽象化を扱うことができます。ライブラリによって処理される低レベルのソケット プラミングを伴う操作 (「このファイルをダウンロードする」など)。
質問: Android の Bluetooth および/または WiFi Direct レイヤーを介して生成されたソケットで動作することが知られている (または動作する可能性が高い) 高レベル プロトコルに相当するものはありますか?
今のところ、私は特定のプロトコルにこだわりはありません。この種の接続オプションを開発者が簡単に使用できるようにするために、この種のプロトコル層の例を探しているだけです。
たとえば、ソケットの代替ソースを使用するOkHTTPのフォークまたはアドオンを作成でき、おそらく同じことを行う Java HTTP サーバーを作成できるようです。これらを考慮して、アプリ開発者は、Bluetooth または WiFi Direct を介して通信する HTTP アプリを作成します (そして、少なくともクライアント側では、接続固有のペアリングとハンドシェイクが行われると、コーディングはかなり「自然」な感じになるはずです)。
IOW、生のソケットを扱うことに戻ると、 20年前のように感じます... :-)
ありがとう!
アップデート
ZeroMQ の回答に対するクリストファー・ミシンスキーのコメントに基づいて、いくつかの明確化が必要であると考えました。
私が望まないことを言うのは簡単です: ソケットを作成した後は、ソケットに触れたくありません。より高いレベルの何かが私のためにそれらを処理し、さらに私が「プロトコル」と見なすものを処理する必要があります(たとえば、ソケットのクローズを超えて、通信操作がいつ終了したかを判断するなど)。
ほとんどの場合、これは私の本用です。低レベルのソケットに関する書籍の例のほとんどは非現実的です。たとえば、「サーバーへのソケットを開き、アップロードする画像を表すバイトのブラストをすぐに開始し、完了したらソケットを閉じる」などです。例は機能しますが、実際にはそのようなものを書くことはありません:
実際にソケット レベルで作業している場合は、自分でプロトコルを展開している場合でも、認証やエラー処理などに対処することを期待するプロトコルを実装することになります。
現在、インターネット操作のためにソケットを直接操作する開発者はほとんどいません。
レイヤーが提供するプロトコルが、開発者が慣れ親しんだもの (HTTP など) か、使用したことがなくても聞いたことがあるもの (XMPP など) であれば素晴らしいことです。そして、単純なシナリオで解決します (たとえば、N-way サポートはクールですが、必須ではありません)。この点で、予備調査 (睡眠不足の脳によって行われた) に基づくと、ZeroMQ は悪い選択肢ではありません。たとえば、任意のソケットで動作する可能性のある XMPP スタックと比較して、「ブランド認知」が少し欠けています。しかし、カフを外すと、私が探している他のものを満たすようです.
これらのスタックには、基礎となるトランスポートによって課せられる制限があることを認識しています (たとえば、Bluetooth は N の値が小さい場合にのみ N-way でうまく機能します)。そして、ここでも私の本でも、私が描写するソリューションがソケットベースの通信のすべてであり最終的なものであるとは絶対に描写したくありません。
私はただ、実際の使用により現実的であることを祈る何かが欲しい. 私は常に TCP/IP 通信に高レベルのプロトコルを使用しており、直接ソケット操作の経験が不足しているため、理解できるものであればボーナス ポイントです。