簡體   English   中英

Linux中的TCP套接字數據不一致

[英]TCP socket data in-consistency in linux

我需要有關以下內容的一些信息。

我正在創建用於跟蹤數據的服務器和客戶端。 從客戶端發送的數據通過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僅保證連接中數據的順序。

保證這一點的一種方法是,每當客戶端要發送一些數據時,就將令牌從服務器傳遞到客戶端。 當客戶端已完成發送數據時,可以假定令牌已被“使用”。

  1. 客戶:請求令牌發送數據

  2. 服務器:將令牌分配給客戶端

  3. 客戶端發送數據並通知數據結束

  4. 服務器假定客戶端的令牌已過期,可以自由分配給另一個。

    當然,客戶端不應在數據結束后或令牌不可用時發送任何數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM