Bonjour,
je suis un noob++ 
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 :
- void Server::acceptConnection()
- {
- QTcpSocket *client_tcp = server.nextPendingConnection();
- int idsock=client_tcp->socketDescriptor();
- ClientToto clienttoto( client_tcp );
- clienttoto.start();
- client_tcp->waitForDisconnected(60000);
- client_tcp->close();
- qDebug()<<idsock<<" terminé";
- }
|
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 :
- QEventLoop pause;
- QTimer timer;
- timer.setInterval(5000);
- timer.setSingleShot(true);
- connect(&timer, SIGNAL(timeout()), &pause, SLOT(quit())); /* ou d'un timeout */
- timer.start();
- pause.exec();
- (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