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

  FORUM HardWare.fr
  Programmation
  C

  pb select et timeout

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb select et timeout

n°1101837
tomi_tomo
Posté le 30-05-2005 à 15:36:01  profilanswer
 

Bonjours,
 
voila jai un probleme avec le timeout de mon select, il est placer dans le serveur. Il marche correctement, le timeout marche parfaitement mais des qu'un client ce connect il boucle sans cesse et ne respect plus le timeout.
Si quelqun peut maider, ce serai cool merci.
tom.
 

Code :
  1. tv.tv_sec = 2;
  2. tv.tv_usec = 0;
  3. if (select(fd_max, &fd_read, &fd_write, NULL, &tv) == -1)
  4.     exit(1);


Message édité par tomi_tomo le 30-05-2005 à 15:50:17
mood
Publicité
Posté le 30-05-2005 à 15:36:01  profilanswer
 

n°1102404
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-05-2005 à 07:52:02  profilanswer
 

tomi_tomo a écrit :

voila jai un probleme avec le timeout de mon select, il est placer dans le serveur. Il marche correctement, le timeout marche parfaitement mais des qu'un client ce connect il boucle sans cesse et ne respect plus le timeout.
Si quelqun peut maider, ce serai cool merci.
tom.

Code :
  1. tv.tv_sec = 2;
  2. tv.tv_usec = 0;
  3. if (select(fd_max, &fd_read, &fd_write, NULL, &tv) == -1)
  4.     exit(1);



Ca dépend un peu du système, mais il est préférable que le rechargement da la structure timer soit dans la boucle. C'est bien le cas ?


---------------
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/
n°1102494
tomi_tomo
Posté le 31-05-2005 à 09:55:45  profilanswer
 

Compren pas ca me fait la meme chose, des qu'un client ce connecte la timeout n'est plus pris en compte.
 

Code :
  1. tv.tv_sec = 2;
  2. tv.tv_usec = 0;
  3. while (1)
  4.     {
  5.       FD_ZERO(&fd_read);
  6.       FD_ZERO(&fd_write);
  7.        
  8.       /* FD_SET() des fd */ 
  9.        
  10.       if (select(fd_max, &fd_read, &fd_write, NULL, &tv) == -1)
  11.          exit(1);
  12.        /* FD_ISSET() des fd */
  13.        /* re init de la structure */
  14.        tv.tv_sec = 2;
  15.        tv.tv_usec = 0;
  16.     }


 
Je les completer un peut, c en gros mon code pour le select pour savoir si javais pas fait une erreur avance qui aurait
pu tuer mon timeout.
Merci pour laide.
tom.


Message édité par tomi_tomo le 31-05-2005 à 09:57:20
n°1102592
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-05-2005 à 10:53:25  profilanswer
 

tomi_tomo a écrit :

Compren pas ca me fait la meme chose, des qu'un client ce connecte la timeout n'est plus pris en compte.


Une façon compliquée d'écrire:


   while (1)
   {
      FD_ZERO(&fd_read);
      FD_ZERO(&fd_write);
         
      /* FD_SET() des fd */  
         
      tv.tv_sec = 2;
      tv.tv_usec = 0;
 
      if (select(fd_max, &fd_read, &fd_write, NULL, &tv) == -1)
         exit(1);
      /* FD_ISSET() des fd */
   }


Je ne vois pas de problème évident... Ca vient peut être d'ailleurs... Il faudrait poster une version minimale mais complète et compilable qui montre le problème...


---------------
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/
n°1102630
tomi_tomo
Posté le 31-05-2005 à 11:12:45  profilanswer
 

ok, merci, c cool de te pencher sur mon erreur, vais voir si je peut retrecir le code pour voir si je peut le poster.
Merci


Message édité par tomi_tomo le 31-05-2005 à 11:13:04
n°1103941
tomi_tomo
Posté le 01-06-2005 à 11:55:50  profilanswer
 

Merci c bon jai trouver la reponse le bug avec le timout etait que je fesait pas un FD_ISSET sur le fd_write.
Voila, merci pour laide.


Message édité par tomi_tomo le 01-06-2005 à 11:56:43
n°1105210
blackgodde​ss
vive le troll !
Posté le 02-06-2005 à 12:12:06  profilanswer
 

sur certains OS, select remplit le tv avec le temps restant, ou le temps écoulé je ne sais plus quand un "événement" socket fait retourner la fonction


---------------
-( BlackGoddess )-

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

  pb select et timeout

 

Sujets relatifs
select.selectedIndex, select.options[i].valueSELECT limité?
Bouton radio et champ et select[Réglé] Comment récupérer le choix sélectionné d'un select?
multiplexage de sockets avec select() - 2eme parametreQuel TimeOut pour un snmpget et un réseau de 600 ips à scanner ?
2 select dans un form[MySQL] Select degressif
[socket] select() ou fork()?[C] gestion des timeout sous Unix avec select()
Plus de sujets relatifs à : pb select et timeout


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)