Bonjour tout le monde j'ai crée un petit projet pour ma fac que je doit rendre ce soir.
Il fallait réaliser un programme de mise aux encheres en réseau (donc socket et tcp), je peut proposer des objets a vendre, encherir afficher les objets a vendre et afficher les objets vendus mais je me suis rendu compte que lorsque que j'affiche les objets (a vendre ou vendus) par la suite mes signaux ne sont plus interceptés correctement je m'explique:
Par exemple lorsque je veux encherir sur un objet le serveur teste si l'objet existe, si cest le cas alors j'encherit puis j'envoit 1 au programme client pour afficher sur le terminal du client que l'enchere a été prise en compte.
Sinon j'envois 0 et le programme client affiche alors qu'aucun objet de ce nom n'éxiste et qu'il est impossible d'encherir.
Or lorsque je fait appel a mes fonctions afficher, si je veux ensuite encherir sur un objet qui existe l'enchere a bien lieu et les mofifications dans le fichier texte sont effectuées en revanche le programme client m'affiche que l'objet n'existe pas.
Je pense que le soucis vient de mes fonctions afficher ou je ne gere pas la quantité de données transferées et ca doit provoquer des soucis dans le buffer...
Je sollicite donc votre aide car je n'ai aucune idée pour controller ceci.
code de la partie serveur:
code de la partie client
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 entre= fopen("objets_a_vendre.txt","r"); if (!entre){ printf("\nImpossible d'ouvrir le fichier."); exit(-1); } cpt = 0; while(fgets(ligne, sizeof ligne, entre)){ cpt+=1; } send(in, &cpt, sizeof(int), 0); fseek(entre,0,SEEK_SET); fin = 0; for(fin;fin<cpt;fin++){ fgets(ligne, sizeof ligne, entre); strcpy(SM.ligne[fin],ligne); } error = send(in, &SM, sizeof(ser_msg), 0); fclose(entre); entre = NULL; printf("\nTransfert du fichier terminé.\n");
Sachant que la structure de donnée SM est definie comme suit :
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 send(in, &choix, sizeof(int),0); entree = fopen("OAV_client.txt","w"); if (!entree){ printf("\nImpossible d'ouvrir le fichier."); exit(-1); } fseek(entree,0,SEEK_END); fseek(entree,0,SEEK_CUR); recv(in, &cpt, sizeof(int),0); error = recv(in, &SM, sizeof(ser_msg), 0); if(error <= 0) printf("Erreur!!!! recu : %d\n", error); for(i = 0;i<cpt;i++){ fprintf(entree,"%s",SM.ligne[i]); } fclose(entree); entree = NULL; ObjetAVendre();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 typedef struct { char ligne[256][256]; }ser_msg;
Partager