J'essaie de créer un serveur de jeu multi-thread utilisé QT, donc chaque client est un thread autonome basé sur QThread. Maintenant, je dois envoyer des données à d'autres clients (dans un autre fil) qui dans la même salle de jeu. par exemple, quand un propriétaire de maison a fermé la salle de jeu, le serveur de jeu doit envoyer au message « room_closed » à d'autres clients whichs dans le même Soom, mais il y a une erreur:QSocketNotifier: Les notificateurs de socket ne peuvent pas être activés ou désactivés à partir d'un autre thread
QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
ps: Je tryed pour utiliser les sinals/slots mais il y a toujours une erreur:
QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x161764e8), parent's thread is ClientThread(0x16196f10), current thread is QThread(0x14a17278)
que dois-je faire?
Code de Serveur est référencé ici [lien] (http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Multithreaded_Client_Server.php), je veux juste envoyer des données à un autre client qui, dans les discussions diffirent, et je essayé d'utiliser socket-> moveToThread (QThread :: currentThread()); mais il montre ce QObject :: moveToThread: thread en cours (0x16415450) n'est pas le thread de l'objet (0x16415550). Impossible de passer au thread cible (0x164154450) QSocketNotifier: Les notificateurs de socket ne peuvent pas être activés ou désactivés à partir d'un autre thread – tobin
Comme je l'ai dit, vous devez appeler 'socket-> moveToThread();' à partir du thread auquel QObject est associé. Donc 'socket-> moveToThread (QThread :: currentThread())' n'a aucun sens puisque ceci n'est valide que si 'socket-> thread()' est déjà 'QThread :: currentThread()'. –
Merci pour votre aide, je ne comprends pas très bien, pourriez-vous me donner un exemple suivre [ce code] (http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Multithreaded_Client_Server.php)? – tobin