[qt] timer dans 2 objets de même classe

timer dans 2 objets de même classe [qt] - C++ - Programmation

Marsh Posté le 16-04-2012 à 17:27:36    

Bonjour,
je suis un noob++ :D
j'ai codé un client/serveur tcp en QT qui s'est avéré ne pas fonctionner avec de multiples clients.
j'ai donc modifié le code qui se déroule comme ceci côté serveur

 

chaque acceptConnection() sur le QTcpServer lance un nouvel objet de type ClientToto qui permet de gérer chaque client indépendamment

Code :
  1. void Server::acceptConnection()
  2. {
  3. QTcpSocket *client_tcp = server.nextPendingConnection();
  4. int idsock=client_tcp->socketDescriptor();
  5. ClientToto clienttoto( client_tcp );
  6. clienttoto.start();
  7. client_tcp->waitForDisconnected(60000);
  8. client_tcp->close();
  9. qDebug()<<idsock<<" terminé";
  10. }
 

A priori, les transfert de données ont l'air de fonctionner sauf un truc:
dans ma classe ClientToto j'ai mis un timer afin de tester la déconnection.

 

Dans une des fct de ClientToto on a :

 
Code :
  1. QEventLoop pause;
  2. QTimer timer;
  3. timer.setInterval(5000);
  4. timer.setSingleShot(true);
  5. connect(&timer, SIGNAL(timeout()), &pause, SLOT(quit())); /* ou d'un timeout */
  6. timer.start();
  7. pause.exec();
  8. (code pour déconnecter le socket_tcp en cours)
 

Le problème c'est que lorsque le timer est terminé ce sont tous les clients qui se font déconnecter.
C'est à dire que même si je lance 2 clients avec 2s d'intervalles les 2 vont se faire déco en même temps.
une idée ?


Message édité par djobidjoba le 16-04-2012 à 17:31:24
Reply

Marsh Posté le 16-04-2012 à 17:27:36   

Reply

Marsh Posté le 17-04-2012 à 08:49:43    

j'ai modifié l'acceptConnection :
- j'enregistre les sockcet client dans une liste (membre de la classe server)
- j'ai enlevé le waitfordisconnect, le close
 
ca change rien :/

Reply

Sujets relatifs:

Leave a Replay

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