Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1523 connectés 

  FORUM HardWare.fr
  Programmation
  C

  je ne sort pas de la boucle de recv() dans mon client

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

je ne sort pas de la boucle de recv() dans mon client

n°675946
essebi_o
Posté le 17-03-2004 à 10:52:52  profilanswer
 

bonjour à tout le monde
 
j'ai decidé de  faire un appel désésperé car ça fait 10 jours que je suis dans une impasse et je sens bien que je ne vais plus m'en tirer ...
ceci est la boucle recv() de laquelle je ne sort jamais ...
************************************************************
while(1) {
if(recv(sd,buff,1024,0)>0) {
printf(buff);
bzero(buff,1024);}
break;
}
**************************************************************
 
Le but est de pouvoir afficher la réponse du serveur et de pouvoir par la suite rentrer une nouvelle requete, et ceci indefinitivement ...
 
MERCI POUR TOUT AIDE
 

mood
Publicité
Posté le 17-03-2004 à 10:52:52  profilanswer
 

n°676401
pospos
Posté le 17-03-2004 à 17:31:03  profilanswer
 

recv est bloquant, donc si il n'y a rien à lire sur ton socket il bloquera indefiniment.
Pour savoir si il y a qq chose à lire sur ton socket il faut que tu utilise select (ou poll)

n°676470
jagstang
Pa Capona ಠ_ಠ
Posté le 17-03-2004 à 19:02:16  profilanswer
 

essebi_o a écrit :


Le but est de pouvoir afficher la réponse du serveur et de pouvoir par la suite rentrer une nouvelle requete, et ceci indefinitivement ...
 


 
 :ange:

n°676473
pospos
Posté le 17-03-2004 à 19:08:32  profilanswer
 

j'ai les files qui se touchent putain!

n°676503
blackgodde​ss
vive le troll !
Posté le 17-03-2004 à 19:44:02  profilanswer
 

Code :
  1. while(recv(sd,buff,1024,0)>0)
  2. {
  3.    printf(buff);
  4.    bzero(buff,1024);
  5. }


---------------
-( BlackGoddess )-
n°677000
essebi_o
Posté le 18-03-2004 à 12:26:59  profilanswer
 

la methode de BlackGoddess je l'ai déjà essayé ... helas .. sans succes
Par contre quand tu parles de select, pospos, tu l'intègres dans une boucle while à la place de recv ?

n°677062
pospos
Posté le 18-03-2004 à 13:46:09  profilanswer
 

regarde le man de select
Select va te dire quels sockets sont actfis en lecture (ou en ecriture/exeption si tu lui a demandé).
 
donc l'idée c'est de renseigner le select avec le numero de ton socket dans la partie "read", puis lancer le select en attente jsuqu'a ce qu'il retourne. Cela voudra soit dire que le timeout est ecoulé (et dans ce cas tu peut rafraichir ton affichage ou tout autre chose, puis retourner dans le select), stoi que ton soket a qqchose à dire et donc dans ce cas tu peux faire ton recv.
 
En gros avant CHAQUE recv il faut que tu fasse un select pour savoir si il y a effectivement qq chose à lire, sinon recv va bloquer

n°677064
essebi_o
Posté le 18-03-2004 à 13:48:54  profilanswer
 

OK, un super MERCI pour l'explication !!
je vais faire ça ..

n°686426
essebi_o
Posté le 29-03-2004 à 12:21:38  profilanswer
 

UN ENORME MERCI A POSPOS
ça fonctionne à merveille avec select()
merci encore


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  je ne sort pas de la boucle de recv() dans mon client

 

Sujets relatifs
aide pour la boucle for en commande doseffectuer une boucle avec IF
boucle infinie avec l'instruction xsl:processing-instruction name =...recv non bloquant en progra socket (connected)
[java]Transferer un fichier quelconque d'un client a un serveur ?newbie : boucle pour renommer liste de fichier
client serveur en C.[mysql] SELECT à partir d'un array() sans faire de boucle ?
arcitecture client/serveur sous linux[shell] boucle for
Plus de sujets relatifs à : je ne sort pas de la boucle de recv() dans mon client


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR