Das war auch nur einer der ersten Schritte bis zur Lösung deines Problems. Du musst deine OnClientRead grundsätzlich so umstellen, dass sie mehrfache Aufrufe bis zu einem kompletten Datenpacket abkann und sie auch entsprechend handelt. Grundlegender Ablauf, welcher in deiner ClientRead sein sollte:
1. neue Daten empfangen
2. neue Daten an den Puffer hinten anhängen (s_receive bei dir)
3. vom Anfang des Puffers nachschauen ob ein komplettes Packet enthalten ist (wenn nein, dann Schritt 7)
4. das empfangene Packet aus dem Puffer rausschneiden (also Puffer vorne um diese Länge kürzen)
5. rausgeschnittenes Packet verarbeiten (deine
Handle() Methode)
6. zurück zu Punkt 4 (es können mehr als ein komplettes Packet angekommens ein)
7. fertig, Ende der OnClientRead
Wie gesagt, das umdeklarieren war nur der erste Schritt, dazu gehört aber mehr. Du hast den Code bis hierher auch selbst entwickelt, also kannst du die Umstellung auch entsprechend machen.