2013-08-15 8 views
10

私は多くを探していましたが、トランスポート層としてTCPを使用する独自のプロトコルを構築するリソースは見つかりませんでした。 必要な手順は何ですか? プロトコルはデバイス用の何らかの「制御プロトコル」でなければなりません。だから私はデバイスにコマンドを送信し、それらを制御して情報を取り戻すことができます。tcpの上にプロトコルを構築するには?

どのようにカスタムプロトコルを実装しますか?それはすべてについての詳細はwhatコマンドを送信することができますhow受信機は異なるコマンドに反応するのですか?私はxmlでカスタムコマンドをいくつか定義していますが、tcpを使ってそれらをワイヤ/エア経由で送信し、送信されたコマンドと応答に反応するロジックをいくつか持っています。これは "プロトコル"を実装する方法ですか?これは "プロトコル"とも呼ばれますか?

種類について

+1

はい、それは "プロトコル" です。いくつかの古典的なTCP/IPプロトコルの例については、オリジナルのドキュメントを見てください。 SMTPの[RFC 821](http://tools.ietf.org/html/rfc821)は良い例です。 –

答えて

13

TCPソケット経由で送信するデータの仕様を書くことができれば、独自のプロトコルが得られます。

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

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

EDIT:ロス・パターソンによってコメントを見て追加RFCサンプルは

、私はまた、プロトコル定義の参照のためにRFCを読んでお勧めします。 RTSPおよびHTTPはテキストプロトコルであり、RTPおよびメディアフォーマット(MPEG4 AV,H-264)はバイナリプロトコルです。

EDIT:

Demystifying Protocols and Serialization Performance with Todd Montgomery

関連する問題