lecture bloquante / client tcp

lecture bloquante / client tcp - C - Programmation

Marsh Posté le 10-01-2006 à 03:12:47    

Bonsoir :hello:
bonne nuit meme...bref
Voila j'ai fais un petit client tcp tout simple qui envoie ce que l'utilisateur entre et qui affiche ce que le serveur lui renvoie.
un truc tout simple tout bete quoi.Tout il marche bien :)
Mais j'ai un probleme :  [:kiki]  
Voila je voudrais savoir comment je pourrais recevoir les infos du serveur sans avoir a taper sur entree . (je pense que c'est du au read mais je suis pas sur)
Je pense etre clair avec ma question, alors dites moi si c'est pas le cas  [:cupra]  

Code :
  1. #define TAILLE_BUFFER 256
  2. int retour;
  3. do
  4.     {
  5.       memset (Buffer, 0, TAILLE_BUFFER);
  6.       retour = read (sock, Buffer, TAILLE_BUFFER);
  7.       if( retour > 0 )
  8. printf(" Reçu : %s\n", Buffer);
  9.       memset (Buffer, 0, TAILLE_BUFFER);
  10.       retour = read(0,Buffer,TAILLE_BUFFER);
  11.       if( retour > 0 )
  12. send( sock,Buffer, TAILLE_BUFFER, 0);
  13.     }
  14.   while( strncmp(Buffer, " Exit", 4) != 0 );


 
merci [:sinking]

Message cité 1 fois
Message édité par gocho le 10-01-2006 à 03:20:41
Reply

Marsh Posté le 10-01-2006 à 03:12:47   

Reply

Marsh Posté le 10-01-2006 à 09:16:44    

gocho a écrit :


Voila j'ai fais un petit client tcp tout simple qui envoie ce que l'utilisateur entre et qui affiche ce que le serveur lui renvoie.
un truc tout simple tout bete quoi.Tout il marche bien :)
Voila je voudrais savoir comment je pourrais recevoir les infos du serveur sans avoir a taper sur entree .

Code :
  1. #define TAILLE_BUFFER 256
  2. int retour;
  3. do
  4.     {
  5.       memset (Buffer, 0, TAILLE_BUFFER);
  6.       retour = read (sock, Buffer, TAILLE_BUFFER);
  7.       if( retour > 0 )
  8. printf(" Reçu : %s\n", Buffer);
  9.       memset (Buffer, 0, TAILLE_BUFFER);
  10.       retour = read(0,Buffer,TAILLE_BUFFER);
  11.       if( retour > 0 )
  12. send( sock,Buffer, TAILLE_BUFFER, 0);
  13.     }
  14.   while( strncmp(Buffer, " Exit", 4) != 0 );




Un serveur n'envoi jamais rien spontanément (à qui ?) Il répond à une requête. Le rôle du read(0, ) (genre de fgets()) est de saisir la requête. L'algo d'un client est en principe :  


establish the connection with the server
DO
   get the request from the user
   send the request to the server
   get the response from the server
   print out the response
UNTIL the user wants to stop the session
discard the connection.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-01-2006 à 11:56:11    

bonjour  [:elmoricq]  

Emmanuel Delahaye a écrit :

Un serveur n'envoi jamais rien spontanément (à qui ?) Il répond à une requête.


oui je suis d'accord.
Mais le probleme c'est que (je fais un serv/client de chat) je parle et j'envoie ce que je viens de dire.ok ca marche
Ensuite le serveur va me renvoyer sa reponse ok.
Mais imaginons qu'a cet endroit un autre user parle et bien je ne vois pas ce qu'il dit a moins de taper sur entree pour valider la saisie utilisateur.
Est ce que l'algo que tu m'as donne eviterai ce probleme?  :??: (etant donne que moi je l'ai fait dans le sens inverse)
 
merci :)  
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed