Bonjour,
Je crée ce sujet parce que je suis confronté à un bug que je ne vois pas du tout comment résoudre, mais je pense savoir ce que c'est et d'où il provient.
J'essaie d'échanger des données binaires (contenues dans des fichiers) avec des sockets UDP. J'utilise donc la fonction fread et j'effectue l'envoi avec sendto à la socket réceptrice ensuite.
Le problème se fait lors de la lecture avec fread. Fread fonctionne et me renvoie bien le nombre de données que je lui demande de lire, mais la variable dans laquelle je veux stocker ces données lues effectue un formatage pour le moins étrange et s'arrête dès qu'il a un '\0. Dit comme ça, ça paraît très logique, le problème est que c'est la première fois que cela m'arrive.
Je vous donne le code :
Fread récupère donc bien 1454 caractères, mais mon buffer data n'en récupère pas la totalité. J'ai déjà adopté cette méthode, et ça avait fonctionné. Là je ne comprends vraiment pas. J'ai surement du manquer quelque chose.
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 FILE* file = NULL; file = fopen(namefile, "rb"); char data[1454]; int length = 1; if (file != NULL) { printf("File exists, sending file...\n"); while(feof(file) == 0){ length = fread(data, 1, PACKETSIZE-6, file); printf("Retour de fread : %d\n", length); // Affiche 1454 soit la taille de PACKETSIZE-6 printf("data size : %lu\n", strlen(data)); // Affiche 250 et quelques, le 251ème caractère étant un '\0'
Merci d'avance pour votre aide
Partager