[英]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僅保證連接中數據的順序。
保證這一點的一種方法是,每當客戶端要發送一些數據時,就將令牌從服務器傳遞到客戶端。 當客戶端已完成發送數據時,可以假定令牌已被“使用”。
客戶:請求令牌發送數據
服務器:將令牌分配給客戶端
客戶端發送數據並通知數據結束
服務器假定客戶端的令牌已過期,可以自由分配給另一個。
當然,客戶端不應在數據結束后或令牌不可用時發送任何數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.