0

我需要一些关于以下内容的信息。

我正在创建用于跟踪数据的服务器和客户端。从客户端发送的数据由 wxWidgets 显示在 GUI 上。这是我的问题。

我有两个跟踪客户端,每个客户端在 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

我认为您不能保证不同主机上两个不相关的 TCP 客户端之间的数据同步。TCP 只保证连接中数据的顺序。

保证这一点的一种方法可能是,当客户端想要发送一些数据时,将令牌从服务器传递给客户端。当客户端完成发送数据时,可以假定令牌已被“使用”。

  1. 客户端:请求令牌以发送数据

  2. 服务器:将令牌分配给客户端

  3. 客户端发送数据并发出数据结束信号

  4. 服务器假定客户端的令牌已过期,并且可以自由分配给另一个。

    当然,客户端不应在数据结束后或令牌不可用时发送任何数据。

于 2012-05-30T07:14:38.627 回答