1


サーバーが次のような2つのメッセージを送信する場合、マルチクライアントのないサーバー/クライアントプログラムで:

byte[] data = Encoding.Default.GetBytes("hello world1");
socket.Send(data1, 0, data.Length, 0);

byte[] data = Encoding.Default.GetBytes("hello world2");
socket.Send(data1, 0, data.Length, 0);

クライアントは、次のような 1 つのメッセージで 2 つのメッセージを受信しました。

ハローワールド1ハローワールド2

しかし、私はクライアントが2の受信で2つの送信を受信したい

修正方法を教えてください??? :(

4

2 に答える 2

2

「\n」などの行区切りを使用して、受信メッセージを分割します。TCP では、パケットが分割または結合される状況に備える必要があります。

UDP を使用した場合は、個別のパケットを送信できます。

于 2012-07-22T03:41:32.773 に答える
2

これらはあなたのオプションの一部です

  1. 長さのプレフィックス付きメッセージを使用できます。たとえば、最初の 4 バイトでメッセージの長さを常に送信する場所。サーバーは最初の 4 バイトを読み取り、長さを認識し、このメッセージの一部である残りのバイト数を認識します。次の 4 バイトなどを認識します。
  2. メッセージ デマーカーを使用できます。たとえば、メッセージに特定のビット パターンがないことがわかっている場合は、メッセージ デマーカーとして送信できます。例として、サーバーは常にビット パターン 0,1,0,1,0,1 をスキャンし、メッセージが終了したことを認識します。
  3. インフラストラクチャが処理する高レベルのフレームワーク WCF を使用できます。
于 2012-07-22T03:44:20.370 に答える