C++ (Qt)void send_to_client(){ char buf[5] = {'1','2','3','4','5'}; socket->write(buf,5); socket->flush();} // На другой стороне void slotReadyRead(){ qDebug() << QTime::currentTime() << socket->readAll();}
QTime("10:42:44") "12345" QTime("10:42:45") "1234512345" QTime("10:42:46") "1234512345" QTime("10:42:47") "1234512345" QTime("10:42:48") "12345" QTime("10:42:48") "12345" QTime("10:42:49") "1234512345" QTime("10:42:50") "1234512345" QTime("10:42:51") "1234512345"
C++ (Qt)void send_to_client(){ char buf[5] = {'1','2','3','4','5'}; xxx++; qDebug() << xxx; socket->write(buf,5); socket->flush();}
debug: [28.01.2014 11:09:29.256]: 1 debug: [28.01.2014 11:09:30.256]: 2 debug: [28.01.2014 11:09:31.256]: 3 debug: [28.01.2014 11:09:32.256]: 4 debug: [28.01.2014 11:09:33.256]: 5 debug: [28.01.2014 11:09:34.256]: 6 debug: [28.01.2014 11:09:35.256]: 7 debug: [28.01.2014 11:09:36.256]: 8
QTime("11:09:29") "12345" QTime("11:09:30") "12345" QTime("11:09:31") "12345" QTime("11:09:32") "12345" QTime("11:09:33") "12345" QTime("11:09:34") "12345" QTime("11:09:35") "1234512345" QTime("11:09:36") "1234512345"
C++ (Qt)void serv::slot_new_connection(){ // QTcpServer* tcpserv если что QThread* thread = new QThread; ServerClient* serv_client = new ServerClient( tcpserv->nextPendingConnection(), &dbl,thread); serv_client->moveToThread(thread); connect(serv_client,SIGNAL(sig_stop(ServerClient*)),this,SLOT(slot_disconnected(ServerClient*))); // Тут поток уничтожается. Тоже корректно connect(thread,SIGNAL(finished()),thread,SLOT(deleteLater())); connect(thread,SIGNAL(finished()),serv_client,SLOT(deleteLater())); thread->start(); qDebug() << "Client connected: id=" << (int)serv_client;}
C++ (Qt) connect(socket,SIGNAL(readyRead()),this,SLOT(slot_read_client()));
QSocketNotifier: socket notifiers cannot be enabled from another threadQSocketNotifier: socket notifiers cannot be disabled from another thread
C++ (Qt) socket->setParent(NULL); socket->moveToThread(thread_ptr()); // thread_ptr() просто возвращает указатель на поток. // Ну и проверка в send_to_client if ((int)this->thread != (int)this->thread_ptr()) qDebug()<<"Self thread is bad"; if ((int)this->thread != (int)socket->thread()) qDebug()<<"Socket thread is bad";