La communauté francophone
La dernière version de Qt est sortie : Qt 4.6.3, ainsi qu'une mise à jour du SDK : Qt SDK 2010.04. QtCreator est en version : 2.0.1
La documentation de Qt 4.6 traduite en français est disponible : http://qt.developpez.com/doc/4.6/index/
La communauté francophone
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous ![]()
J'ai quelques soucis que je n'arrive pas à résoudre sur un serveur que j'ai créé en qt. Avant ça marchait, après, ça ne marche plus. En fait j'ai un peu modifié ma conception, afin de pouvoir connecter des objets entre eux avec des signaux.
Avant :
J'avais un objet SocketServer qui héritait de qTcpServer, à chaque connexion entrante, j'instanciais un objet SocketClient qui héritait de qtcpSocket (avec redéfinition de la méthode incomingConnection de qTcpServer)
Le code de la méthode :
void SocketServeur::incomingConnection(int socket)
{
SocketClientEcran *socketClient = new SocketClientEcran(socket);
connect(socketClient, SIGNAL(disconnected()), this, SLOT(deconnexionClient()));
}Après :
Mon objet SocketServer contient un qTcpServer qui comporte une méthode permettant d'instancier mon objet SocketClient. Le signal newConnection() est connecté à cette méthode. Quand un client se connecte, cette méthode est donc appelée.
Le code de la méthode en question :
QTcpSocket *socket;
if ((socket = _serveur->nextPendingConnection()) != 0)
{
SocketClient *ecran = new SocketClient(socket->socketDescriptor());
connect(ecran, SIGNAL(disconnected()), this, SLOT(deconnexionEcran()));
}Et pour finir, le code de mon objet SocketClient qui hérite de QTcpSocket
SocketClient::SocketClient(int socket)
{
if (!this->setSocketDescriptor(socket))
qDebug() << "Invalid socket descriptor";
_typeClient = NON_AUTH;
connect(this, SIGNAL(readyRead()), this, SLOT(lecture()));
}En fait, lors de l'execution, la connexion entre le signal ReadyRead et mon slot ne fonctionne pas dans le deuxième cas (le programme ne rentre pas dans la méthode). Et j'ai un message sur ma console quand je déconnecte mon client : QSocketNotifier: Invalid socket 23 and type 'Read', disabling...
Je peux dérouler d'avantage de code, mais j'ai essayé de résumer le coeur du problème.
Hors ligne
N'ayant pas trouvé de solution, j'ai gardé l'ancienne conception qui fonctionne bien. N'empêche que si quelqu'un maîtrise bien les qTcpServer, je veux bien qu'il m'explique ![]()
J'aimerai comprendre d'où venait mon problème pour la suite.
Hors ligne
Pages: 1