Bonjours
J'ai fais une petite application client/serveur (grâce au sockets), le client est fait en utilisant aussi l'Api Win 32...
Donc, j'ai crée des bouton (dans l'application client) qui envoient (si en clique sur un des bouton) une chaîne de caractère au serveur qui la traite selon le cas.
Mais j'ai un petit problème:
Il y a un bouton qui sers à ouvrir un fichier (par le serveur), et un autre qui sers à le fermé.
Càd dés qu'on clique sur le 1er bouton dans l'application client il envois une chaîne au serveur qui la traite (pour ouvrir le file).
Et dés qu'on appuis sur le 2eme bouton il envois une chaîne au serveur qui la traite (pour fermé le file)
Voila un petit aperçu au niveau du traitement (par le serveur) :
Code :
- //<...> <...>
- FILE* fichier = NULL;
- // Dans une boucle while(continuer) je fait ceci :
- error = recv(csock, bufferRecv, sizeof(bufferRecv)-1, 0);
- bufferRecv[error] = '\0';
- if(strcmp(bufferRecv,"BOUTON1" ) == 0)
- {
- fichier = fopen("BadDay.txt", "a" );
- while(1) // c'est là que j'ai le probléme, comment fair pour sortire de la boucle...?
- {
- VariableChar = GetAChar();
- if(VariableChar != '\0') fprintf(fichier, "%c", VariableChar);
- Sleep(130);
- }
- }
- else if(strcmp(bufferRecv,"BOUTON2" ) == 0)
- {
- fclose(fichier);
- }
- //<...> <...>
|
Le problème c'est que quand le BOUTON1 est appuyé, càd bufferRecv == "BOUTON1" :
J'ouvre le fichier BadDay.txt et je rentre dans une boucle infinie.... et je ne peut pas fermer le fichier car le bufferRecv ne reçois pas la chaîne "BOUTON2" quand j'appuis sur le 2eme bouton, et c'est normale puisque je suis dans une boucle infinie. while(1) {...} .
Donc je ponçais a faire un fonction Exit ( un truc du genre while(!Exit) {} ) , pour sortir de la boucle quand en appuis sur le bouton 2, Mais je ne vois pas trop comment faire...
Je ponçais aussi a faire un teste if(strcmp(bufferRecv,"BOUTON2" ) == 0) dans le corps même de ma fonction GetAChar(); en lui passent le bufferRecv comme paramètre... mais ça ne marchera pas, puisque la fonction recv() et en dehors de la boucle while(1)... A mois que je fasse un autre recv pour le même buffer ?
Si quelqu'un peut me donnez une idée......
J'espère que vous avez compris ce que je voulais dir.
En d'autre terme je voudrai récupérer le bufferRecv même si je suis dans la boucle while(1) {..} ...
thank you for your help.
Message édité par Bad_Day le 28-11-2006 à 16:50:41