les trucs en rouge , je suis pas sur , ca va dependre de ce que tu fais derriere
tu as juste a changer ca :
Array.Copy(DataToParse, index + packet_lenght_type, packet_content, 0, packet_lenght);
par ca
Array.Copy(DataToParse, index + packet_lenght_type, packet_content, 0, taille_du_message+taille_encodée+2); # taille du message et taille encodée que tu peux facilement trouver , https://cadernis.com/d/1056-de-lanalyse-des-paquets
mais juste avant tu creais ton tableau packet_content (enfin plutot message_content , ca fait mieu) avec un nombre de bytes egale a taille_du_message+taille_encodée+2 ,
une fois que tu as traité ca , tu regardes si il y'a un autre message dans le packet , si index+taille_du_message+taille_encodée+2<DataToParse alors index=index+taille_du_message+taille_encodée+2 et tu recommences jusque index+taille_du_message+taille_encodée+2=DataToParse ou que index+taille_du_message+taille_encodée+2>DataToParse ,
si c'est = alors c'est tres bien y'a plus rien a faire pour ce packet
si c'est > alors tu as pas encore recu la fin du message , tu gardes ce que tu as en memoire (a partir du dernier index jusque la fin de DataToParse) et quand tu auras recu un autre packet alors il faudra ajouter ce que tu as gardé en memoire au debut du nouveau DataToParse