Socket-Programmierung: Wie kann ich eine bestimmte Anzahl von Bytes aus dem Puffer lesen?

TCP ist ein Stream-basiertes Protokoll. Um diesen Stream in meine Nachrichten zu konvertieren, sende ich die Größe jeder Nachricht mit der Nachricht selbst. Auf der Serverseite habe ich zuerst die ersten zwei Bytes der Nachricht gelesen, die die Größe haben. Dann erstelle ich ein Byte-Array, dessen Größe der gerade gelesenen Größe entspricht. Dann habe ich die Bytes in dieses Array eingelesen. Aus irgendeinem Grund werden jedoch mehr Bytes gelesen als angegeben. Wie kann ich genau die Anzahl von Bytes lesen, die ich angegeben habe?

Hier ist mein Code:

while (true)
{
    data = null;
    length = null;

    size = new byte[2];

    handler.Receive(size);

    length += Encoding.ASCII.GetString(size, 0, 2);
    System.Console.WriteLine("Size: " + Int32.Parse(length));

    bufferSize = Int32.Parse(length) + 2;
    bytes = new byte[bufferSize];

    handler.Receive(bytes);

    data += Encoding.ASCII.GetString(bytes, 0, bufferSize);
    System.Console.WriteLine("Data: " + data);
}

Dies ist mein Server, der auf einem Windows-PC ausgeführt wird und in C # geschrieben ist. Mein Client läuft in Android Phone, geschrieben in Java.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage