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 :
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...
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); }
Merci pour votre aide !
Partager