我的TCP數據很少,但足以讓它顯眼,以錯誤順序接收,或完全丟失。TCP數據接收順序錯誤/丟失
例如,我的客戶就送Log:joehot200;Password
,並且服務器將收到ehot200;Password
我檢查TCP - received in wrong order和TCP data occasionally received in wrong order and incomplete和沒有幫助。他們都似乎有沒有給出足夠的細節或不解決問題的答案。
我使用這個代碼發送客戶端和服務器上的數據:
public void sendData(String data){ //Server code
try{
System.out.println("Sent " + data);
DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream());
outToClient.writeBytes(data + "\n");
}catch (Exception e){
e.printStackTrace();
}
}
public void sendData(String data){ //Client code
try{
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes(data + "\n");
}catch (Exception e){
}
}
這是那種正在發送數據/接收:
Data: UID:1;Pitch:0.0
FROM SERVER: Name:1;joehot200
Data: Name:1;joehot200
FROM SERVER: Type:1;2
Data: Type:1;2
FROM SERVER: FlaBag:1;0
Data: FlaBag:1;0
FROM SERVER: Teall-104,442m:1;1
Data: Teall-104,442m:1;1
FROM SERVER: 6.572884235079,51.82797146606425,5670.44316581469,0
事實上,尋找在上面的數據,即使這是錯誤的!我沒有以FlaBag或Teall開頭的數據包。
這裏怎麼回事?
我從多個線程發送數據,雖然我顯然收到同一線程上的所有數據。
你是否有機會使用多個線程?可能是一種競爭條件。 – Bauss 2015-03-19 10:53:23
這真的不應該發生。您的操作系統應該爲您處理亂序或丟失數據包。 – Alnitak 2015-03-19 10:54:31
@ L33TS「比賽條件」? – Joehot200 2015-03-19 10:54:50