Problème de saisie de texte sur un client

Fermé
_Landry_ Messages postés 9 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 23 juin 2008 - 13 juin 2008 à 18:09
_Landry_ Messages postés 9 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 23 juin 2008 - 14 juin 2008 à 11:20
Bonjour,
débutant en programmation, je me suis récemment lancé dans la programmation d'un serveur et d'un client dans le but de créer un mini chat.
Donc, quand mon client se connecte au serveur, le serveur envoi un message de bienvenu au client(cela fonctionne), et le serveur affiche un message annonçant une nouvelle conection. Jusque là, pas de problème... mais lorsque je lance la fonction chat dans la console du client, je suis sensé pouvoir rentrer du texte qui va être envoyé au serveur (mon message) par l'intermédiaire d'un gets (eh oui, un gets, j'ai essayé avec une boucle et un scanf %c mais j'ai le même problème) ; voici le morceau de code concerné:
char Quit[100] = "quit";
long Buffer_message[2500];
gets(Buffer_message); // Le gets en question
if (strcmp(Buffer_message, Quit) != 0)//si l'utilisateur a rentré autrechose que "quit"
{
send (sock, Buffer_message, 2500, 0);//On envoie le message au serveur...
memset(Buffer_message, 0, 2500);
recv(sock, Buffer_message, sizeof(Buffer_message), 0);//Qui nous le renvoie.
scan_message(Choix, Exit, Help, sock, Message);//ma fonction prenant en charge le chat.
}
else if (strcmp(Buffer_message, Quit) == 0)//fonction permettant de quitter le chat
{
memset(Choix, 0, 100);
printf("\n\tfermeture du salon de discussion\n");
scan(Choix, Exit, Help, sock, Message);
}
Or, ce code fonctionne a la perfection... tant que le serveur n'est pas lancé! En effet, si le serveur tourne en même temps, au moment du gets, le client attent bien que l'utilisateur rentre du texte, mais si je tape quelque chose, rien n'apparait a l'écran, et ce, UNIQUEMENT si le serveur est lancé!

Je soupçonne donc un problème de socket, mais ma socket fonctionne bien avant ceci. Et je ne vois pas pourquoi mon code plante au gets si il ne s'agit pas d'un problème de mémoire...

j'espère avoir été suffisamment clair et précis, j'attend votre aide dans l'espoir de comprendre ce "bug".

merci d'avance

1 réponse

_Landry_ Messages postés 9 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 23 juin 2008
13 juin 2008 à 19:18
deux petites rectifications:
=> il s'agit bien, ligne deux, d'un char Buffer_message et non d'un long comme il est écrit
=>la déclaration de ce tableau est initialisé par un memset(), ce qui ne figure pas ici

PS:le problème que je rencontre est inexistan si je met un scanf("%s"), mais j'ai besoin des espaces...


merci de me répondre
0
_Landry_ Messages postés 9 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 23 juin 2008
14 juin 2008 à 11:20
s'il vous plait aidez moi

plzzzzzzz help
0