Ça, c'est un gabarit mémoire. Je corrigerai la structure, mais il me semble que ça considère 65 536 octets précisément.
Ici << Define >> n'alloue rien ou presque rien (la taille d'une variable de pointage).
Donc si j'alloue un tampon mémoire quelconque :
Quand je positionne mon gabarit sur ce tampon comme ça :
je peux lire/écrire à la volée tout ce qui est dans cette zone mémoire.
Je fais attention car *Mem\A[1001] est peut-être dans le gabarit. Mais le gabarit n'a rien à voir avec la mémoire allouée, donc *Mem\A[1001] provoque une erreur IMA.
On se sert de MemorySize() pour éviter ça, mais MemorySize() c'est quand on a alloué soit-même, avec AllocateMemory().
Là, ce n'est pas AllocateMemory() mais ReceiveNetworkData(). Je doute fort qu'il n'aie pas une quantité exacte d'octets fournie avec.
Les paquets que tu reçois c'est normal : ça dépend du temps qu'il fait, du trafic et de l'affluence sur le serveur.
Des fois, les paquets sont petits, des fois, carrément pas.
Un gabarit de 64 mégas me semble éviter la contre-euphorie du << C'est génial : mon appli crashe tellement ton réseau il est bon ! >>
Et je rappelle bien que ce gabarit n'alloue rien : c'est juste un repérage de compilation.
Grâce à lui, si une chaîne standard à zéro terminal est coupée en 18, zéro ou pas tu pourras tout lire. Tout analyser, ce qui est le but de la manoeuvre...
En espérant éclairer ta lanterne...