TCP はストリーム ベースで、クライアントからサーバーへのデータ ストリームを取得します。送信される各メッセージが個別に送信されることを保証するアプリケーション プロトコルを構築できない場合は、ストリームから期待しているものを「逆シリアル化」する必要があります (通常、TCP では賢明な考えではありません)。
そのため、データが何であるかを区別できるように、メッセージごとに何かを送信する必要があります。これは、多くの場合、各メッセージの開始時にタグまたはタイプ データを使用して行われます。1 バイトで十分な場合もあります (メッセージの種類によって異なります)。次に、ストリームからそのバイトを読み取り、次に何を逆シリアル化するかを決定します。たとえば、文字列を送信する場合は、'1' をシリアル化し、string. 日付/時刻を送信する場合は、「2」をシリアル化してからDateTime. サーバー上で、これらのオブジェクトの両方がほぼ同時に送信された場合、単純に を逆シリアルbyte化でき、それが「1」の場合は a を逆シリアル化しstring、次に逆シリアル化を続行します。次のを取得しbyte、「2」の場合は逆シリアル化しますDateTime。_
TCP はメッセージ ベースのプロトコルではなく、ストリーム ベースのプロトコルであることを覚えておくことが重要です。メッセージベースは、アプリケーション レベルで実装する必要があります。たとえば、上記のようなものです。
また、「シリアライズ」と「デシリアライズ」とは、.NET ドキュメントの「オブジェクトのシリアライズ」で説明されている典型的な組み込みのシリアライザーとデシリアライザーを意味します。JSON.NET などのライブラリに含まれる JSON シリアライザーや、組み込みのDataContractJsonSerializerand JavaScriptSerializer.