Reception d'un tableau de taille inconnue
Bonsoir,
En utilisant les sockets, un serveur reçoit un tableau d'entier de taille inconnue, la communication est basé sur le protocole TCP.
la solution utilisée est de continuer à recevoir "TMAX" octets tant que le nombre d'octet reçu est égale TMAX et pour ne pas se bloquer sur la dernière réception on utilise la fonction ioctl pour rendre l'appel du recv non bloquant.
j'ai essayé avec le code ci apres, mais quelque chose ne tourne pas rond :roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
...
/* reception du tableau */
int buffer = malloc(sizeof(int)*TMAX );
int totalRecu =0,
tailBuffer = sizeof(int)*TMAX ; //nombre d'octet dans buffer
char copy = (char *)buffer ;
do{
nbByte = recv(sock_trans,copy,TMAX ,0);
totalRecu += nbByte ;
if(tailBuffer < totalRecu){
/*reallocation de l'espace memoire */
buffer = realloc(buffer, tailBuffer + TMAX );
tailBuffer += TMAX ;
}
/*incrementation du pointeur */
copy = copy + nbByte ; // là je ne suis pas sûr ???!!!
}while(nbByte == TMAX) ; |
Merci d'avance pour vos précieuses remarques
E.Bazoga