我需要一些关于以下内容的信息。
我正在创建用于跟踪数据的服务器和客户端。客户端发送过来的数据通过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 编写的。
约翰
最佳答案
我认为您不能保证不同主机上两个不相关的 TCP 客户端之间的数据同步。 TCP 仅保证连接中数据的顺序。
保证这一点的一种方法是,每当客户端想要发送一些数据时,将 token 从服务器传递到客户端。当客户端完成发送数据时,可以假定 token 已“使用”。
客户端:请求发送数据的 token
服务器:为客户端分配 token
客户端发送数据并发出数据结束信号
服务器假定客户端的 token 已过期并且可以自由分配给另一个客户端。
当然,客户端不应在数据结束后或 token 不可用时发送任何数据。
关于linux - Linux 中的 TCP 套接字数据不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810899/