windows - Funktion, som passerer en buffer til recv

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har lavet en lignende post tidligere i dag, men jeg tror ikke, jeg var klar nok til, hvad jeg skal opnå. Jeg ønsker at oprette en funktion, der tager en buffer som parameter, som kun bruges til kun at gemme en del af en indgående besked fra en server modtaget ved hjælp af windows recv functin. Den sender en anmodning om nogle tilfældige tal til serveren, venter på svaret og sætter dem i bufferen. Problemet er, at antallet af numre i den indkommende pakke kan være en hvilken som helst længde afhængigt af hvor mange opkaldsfunktioner der blev anmodet om. Den indgående besked er struktureret som sådan:


struct PacketIn
{
    int var1,
    int var2,
    int* array;
}


og funktionen skal kaldes som denne:


int numbers[100];
func(numbers,100) //takes a buffer and an amount of numbers to request.


Funktionen MÅ IKKE udføre allokering af arrayet, men som du kan se, skal det gøre en del af tildelingen, da den indkommende pakke består af mere end blot de tilfældige tal, som det har data, der bruges til at bekræfte meddelelsen.


Den kaldende funktion burde ikke få de bekræftelsesdata i bufferen den allokerer. Er det muligt uden at allokere hele indkommende pakke inde i funktionen? Jeg suspenderer det muligvis ikke.


Tak.

Bedste reference