19

いろいろ探したのですが、TCPをトランスポート層とする独自のプロトコルを構築しているリソースが見つかりませんでした。必要な手順は何ですか? プロトコルは、デバイスの「制御プロトコル」のようなものである必要があります。そのため、デバイスにコマンドを送信して制御し、情報を取得できます。

では、カスタム プロトコルをどのように実装するのでしょうか。what送信できるコマンドを定義しhow、受信者がさまざまなコマンドに反応することがすべてですか? xmltcp を使用して有線/無線で送信するカスタム コマンドを定義していて、送信されたコマンドに反応して応答するロジックがそこにあるとします。これは「プロトコル」を実装できる方法ですか?これは「プロトコル」と呼ばれていますか?

敬具。

4

1 に答える 1

23

TCP ソケットを介して送信するデータを定義する仕様を作成できる限り、独自のプロトコルを使用できます。

主に、コマンドとペイロードの定義に関するものです。コマンド パケットを TCP に通す前にシリアル化する必要があります。エンディアンは、パケットをバイナリ形式でパックする場合によくある落とし穴です。XML と JSON は、一般的なテキストベースのデータ交換形式です。個人的に私はプロJSONです。

バイナリのシリアル化については、 BSONMessagePackまたはprotobufを参照してください。型指定されたデータをバイナリにパックするため、通常、テキスト ベースのシリアル化よりもパフォーマンスが高く、サイズがコンパクトで、型チェックが優れています。また、エンディアン変換、パケットのバージョン管理を処理し、さまざまな言語でドライバー/バインディングを提供します。サーバーとクライアントは異なる言語で書かれている可能性があります。

編集: RFC サンプルを追加

Ross Patterson のコメントを見て、プロトコル定義のリファレンスについて RFC を読むこともお勧めします。RTSPHTTPはテキスト プロトコルであり、RTPとメディア フォーマット ( MPEG4 AVH-264 ) はバイナリ プロトコルです。

編集:

Todd Montgomery によるプロトコルとシリアライゼーション パフォーマンスの謎解き

于 2013-08-15T09:42:48.027 に答える