0

以下に関する情報が必要です。

データをトレースするためのサーバーとクライアントを作成しています。クライアントから送信されたデータは、wxWidgets によって GUI に表示されます。これが私の問題です。

2 つのトレース クライアントがあり、各クライアントは 0.9 マイクロ秒で 100 メッセージのデータを送信します。私の問題は、サーバーで受信したデータが正しくないことです。

Example:
Actual data:

data from client 1
data from client 1
data from client 1
data from client 2
data from client 1
data from client 1
data from client 1
data from client 2
data from client 1
data from client 1
data from client 2

Received data on server side:
data from client 2
data from client 2
data from client 1
data from client 1
data from client 1
data from client 2
data from client 1
data from client 1
data from client 1

質問:

このデータの不一致の問題を解決するにはどうすればよいですか? TCPソケットを使用しています。すべてのコードは CPP で書かれています。

ジョン

4

1 に答える 1

1

異なるホスト上の 2 つの無関係な TCP クライアント間のデータ同期を保証できるとは思いません。TCP は、接続内のデータの順序のみを保証します。

これを保証する 1 つの方法は、クライアントが何らかのデータを送信したいときはいつでも、サーバーからクライアントにトークンを渡すことです。トークンは、クライアントがデータの送信を完了したときに「使用された」と見なされる場合があります。

  1. Client : 送信するデータのリクエスト トークン

  2. サーバー: トークンをクライアントに割り当てます

  3. クライアントがデータを送信し、データの終わりを知らせる

  4. サーバーは、クライアントのトークンが期限切れであると想定し、別のクライアントに自由に割り当てることができます。

    もちろん、クライアントは、データの終了後、またはトークンが使用できない場合、データを送信すべきではありません。

于 2012-05-30T07:14:38.627 に答える