我的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