C#で単純なTCPサーバーを作成しました。これは、クライアントからのコマンドを受け取る(そして、それ以降の処理のためにそれらを渡す)ためのものです。これらのコマンドとその引数はテキストです。 (クライアントがテキストコマンドをエンコードすることを意味し、サーバーはテキストを解釈してテキストに戻します。)c#TCPサーバーがテキストとバイナリを受け入れる
これらのコマンドの一部は、バイナリファイル(ZIPファイルなど)をパラメータとして使用します。
ここでは、サーバーサイドでテキストとバイナリデータを区別する方法がわかりません。サーバーはバイナリデータのみを受信しますが、一部はテキストにデコードされることが意図されていますが、一部はデコードされていません。どれがどちらであるかはどのように判断するのですか?
私は何らかのプロトコルを定義しなければならないと思います。しかし、私はそれについてどうやって行くのか本当に分かりません。
アドバイスやヒントありがとうございました!
Chris。
あなたのファイルサイズに33%のオーバーヘッドが気になる場合は、あなたのバイナリファイルを[Base64](https://en.wikipedia.org/wiki/Base64)にしてください。 – Phylogenesis
TCPトランスポート層とともにアプリケーション層が必要です。クライアントはコマンドを送信し、サーバーはコマンドを処理します。したがって、各メッセージの前に1バイトのコマンドを追加することができます。サーバーは1バイトを削除して残りのメッセージを処理します。バイナリを送信するので、データが実際にどこで終了するかをサーバーに知らせるために、各メッセージにバイト数を追加します。 – jdweng