0

重複の可能性:
TCP クライアント側の問題

c# TCP クライアントとサーバー アプリケーションを使用して大きな問題を抱えています。すべて正常に動作します... しかし、場合によっては、TCP サーバーが TCP クライアントに同時に応答を送信すると、クライアントは、サーバーによって送信された 2 つのメッセージの両方が実際には単一のメッセージであると見なすことができます。なぜそのようなケースが発生しているのかわかりません... 誰かが知っているなら、私を助けてください。私の TCP クライアントとサーバーは c# で書かれています。

4

2 に答える 2

0

これは、TCP の通常の動作です。シーケンスは保証されますが (サーバーが A を送信してから B を送信した場合、クライアントは B を受信して​​から A を受信することはありません)、「メッセージ」については何も知りません。

クライアント側でデータをメッセージに分割するには、TCP 経由のアプリケーション プロトコルが必要です。たとえば、HTTP は CRLFCRLF を使用して HTTP メッセージの終わりを判別します。
必要に応じて、既存のものを使用することも、独自に作成することもできます。

于 2012-09-10T10:25:52.383 に答える
0

WriteTCP 接続の一方の側での の呼び出しと、もう一方の側での の呼び出しが 1 対 1 で対応するという保証はありませんRead。への呼び出しごとに、データを受信しない、メッセージの一部を受信する、メッセージ全体を受信する、または複数のメッセージを受信する可能性があります。Read

これらのデータの塊をメッセージに戻すための適切な作業を実行するか、または別の方法で難しい作業を行う必要がある場合は、より高いレベルのテクノロジ (WCF など) に切り替えるかは、ユーザー次第です。

于 2012-09-10T10:26:23.513 に答える