Bonjour,

J'ai besoin de récupérer dans une liste chainé les packet UDP (4 packets) avec recvfrom(); cependant lorsque je retourne ma liste le pointeur sur la structure suivante vaut NULL donc je ne peux afficher qu'une seul liste (celle que je retourne), j'ai une fonction afficher(); qui me permet d'afficher toutes les listes chainée qui elle fonctionne bien, le problème se pose donc sur ma fonction de récupération des 4 packets UDP ci-dessous :

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
30
31
 
DECOUPE_TIF_STRUC			       *recv_data(int sock)
{
	int						nOctets;
	int						i;
	SOCKADDR_IN				sin = {0};
	int						sinsize = sizeof(sin);
	unsigned char 			        buffer[65508] = {0};
	DECOUPE_TIF_STRUC		       *new_t = NULL;
	DECOUPE_TIF_STRUC		       *temp = NULL;
	for(i = 0; i < 4; i++)
	{
		new_t = (DECOUPE_TIF_STRUC*)malloc(sizeof(*new_t));		
		new_t->next = NULL;
		if (new_t == NULL)
			return (temp);
		if ((nOctets = recvfrom(sock, (char *)new_t->data, sizeof(buffer), 0, (SOCKADDR *)&sin, &sinsize)) == SOCKET_ERROR)
		{
			perror("recvfrom()");
			wprintf(L"bind failed with error %d\n", WSAGetLastError());
			exit(errno);
		}
		buffer[nOctets] = '\0';	
		//printf("NOCTET : %d\n", nOctets);
		if (i == 0)
		{
			 temp = new_t;
		}
	}
	return (temp);
}
Lorsque je change la condition du i == 0 par i == 1 ou 2 ou 3 j'affiche respectivement les packets 0,1,2,3. Je pensais qu'il suffisait que je renvoie la structure de i == 0 la première donc pour pouvoir accéder au suivante, mais non...

Merci pour votre aide !