Я пытаюсь создать многопоточный игровой сервер, использующий QT, поэтому каждый клиент является автономным потоком «QThread». Теперь мне нужно отправить данные другим клиентам (в другой теме), которая находится в той же игровой комнате. Например, когда домовладелец закрыл игровой зал, игровой сервер должен отправить в «room_closed» сообщения других клиентов whichs в том же SOOM, но есть ошибка:QSocketNotifier: оповещения сокета не могут быть включены или отключены из другого потока
QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
пс: Я судимый для использования синусов/слотов, но все еще есть ошибка:
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)
Что мне делать?
код сервера, упоминается здесь [ссылка] (http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Multithreaded_Client_Server.php), я просто хочу, чтобы отправить данные на другой клиент, который в ти различных потоков, и я попробовал использовать socket-> moveToThread (QThread :: currentThread()); но он показывает этот QObject :: moveToThread: Current thread (0x16415450) не является потоком объекта (0x16415550). Невозможно перейти к целевой теме (0x164154450) QSocketNotifier: оповещения сокета нельзя включить или отключить из другого потока – tobin
Как я уже сказал, вам нужно вызвать 'socket-> moveToThread();' из потока, с которым связан QObject. Поэтому 'socket-> moveToThread (QThread :: currentThread())' не имеет никакого смысла, поскольку это справедливо только в том случае, если 'socket-> thread()' уже 'QThread :: currentThread()'. –
Спасибо за вашу помощь, я не совсем понимаю, не могли бы вы привести мне пример, следующий за [этот код] (http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Multithreaded_Client_Server.php)? – tobin