Data går tabt under netværkskommunikation
Jeg har en server og en klient. Klienten sender nogle forespørgsler til serveren, som svarer. Desværre går der noget data tabt under overførslen. Måske nogen kan hjælpe mig?Jeg bruger følgende 2 metoder:
public void SendObject(object response) {
Console.WriteLine("Send: " + response);
byte[] encryptedData = Serialize(response);
int size = encryptedData.Length;
byte[] byteSize = BitConverter.GetBytes(size);
networkstream.Write(byteSize, 0, 4);
networkstream.Write(encryptedData, 0, encryptedData.Length);
networkstream.Flush();
}
public object ReadObject() {
byte[] data = new byte[4];
this.networkstream.Read(data, 0, 4);
int size = BitConverter.ToInt32(data, 0);
MemoryStream ms = new MemoryStream();
int received = 0;
byte[] buffer = new byte[1024];
while(received < size) {
int bytesRead = this.networkstream.Read(buffer, 0, buffer.Length);
ms.Write(buffer, 0, bytesRead);
received += bytesRead;
}
ms.Flush();
ms.Position = 0;
byte[] obj = ms.ToArray();
object response = Deserialize(obj);
Console.WriteLine("Read: " + response);
return response;
}
Kommunikationen udskriver følgende:
Send: Module: 2 CommandID: 9
Send: Module: 2 CommandID: 1
Read: Module: 2 CommandID: 9
Read: Module: 2 CommandID: 1
Send: Module: 1 CommandID: 1
Send: 0 4 {0} {0} {0}
Read: Module: 1 CommandID: 1
Send: Module: 1 CommandID: 6
Read: 1 9 {1} {0} {1}
Server:
Read: Module: 2 CommandID: 9
Send: Module: 2 CommandID: 9
Read: Module: 2 CommandID: 1
Send: Module: 2 CommandID: 1
Read: Module: 1 CommandID: 1
Send: Module: 1 CommandID: 1
Read: 0 4 {0} {0} {0}
Send: 1 9 {1} {0} {1}
Som der kan ses, når M:1 CID: 6 ikke igennem til serveren.