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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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