Не понимаю, почему у этих уроков так мало просмотров? Это же самые понятные и интересные видеоуроков.
@alexandrpetrov55705 жыл бұрын
Добрый день очень полезное видео.Хотелось бы увидеть подобные видео о написании сервера на qwebsocketserver .Также как с TCP. Однопоточного ,многопоточного и на пуле потоков. Или хотя бы многопоточного ,так как нигде нет подобных материалов
@mrognor31233 жыл бұрын
Спасибо!
@greatskydrake95313 жыл бұрын
у меня вот такая конструкция QSokcetThread::QSokcetThread(int socketDisctiptor, QObject *parent) : QThread(parent) , socketDescriptor(descriptor) вызывает синтаксическую ошибку
@QuantionRu12 жыл бұрын
Отличные видео! Просьба выкладывать исходники и давать линк на них в описании видео.
@greatskydrake95313 жыл бұрын
Добрый день. Подскажите пожалуйста, как добиться многопоточности в графических приложениях ?
@greatskydrake95313 жыл бұрын
все получилось.
@igorm65855 жыл бұрын
Я так и не понял почему в программе использовали параметр Qt::DirectConnection для функции connect : connect(socket, SIGNAL(readyRead()), this, SLOT(onReadyRead()) , Qt::DirectConnection) Объект QSocketThread (this) находится в основном потоке, а объект типа QTcpSocket (socket) находится уже в совершенно другом потоке (он создается в функции run и его будет обслуживать поток, который позже запускается функцией exec()). И эти потоки могут вообще выполняться одновременно, поэтому напрямую посылать сообщения вроде как и не корректно. Т. е. в поток где socket получает сигнал, а на обработку передается в слот класса QSocketThread, экземпляр которого находится в другом потоке. Но используется Qt::DirectConnection, поэтому оно выполняется сразу же из потока socket. А поскольку экземпляр класса QSocketThread ничего не делает и сам не вызывает свои слоты, то вроде как конфликтов нет. IMHO надо было бы определить класс-потомок от QTcpSocket и в нем определить слоты onReadyRead() и onDisconnected() и связывать свои сигналы со своими же слотами. P.S. IMHO конечно же. Я мог чего-то и не понять.
@plgrm442 жыл бұрын
Потому что неверно считать, что если функция run выполняется в другом потоке, то и объект класса, который там создали, будет принадлежать другому потоку) Чтобы это было так нужно вызвать moveToThread().
@igorm65852 жыл бұрын
@@plgrm44 Объект, у которого не указан родитель, поступает во владение потока, который этот объект создал. Читал на Хабре умную статью "Правильная работа с потоками в Qt", оттуда и почерпнул информацию. Видимо, под впечатлением этой статьи я и написал 3 года назад свой комментарий :-) А сейчас уже и не помню что к чему и о чем был мой комментарий :-)
@JackTaylorCSGO8 жыл бұрын
кто подскажет как в win 8.1 в диспетчере задач показать столбец с потоками? все перерыл не нашел
@ginbulat5 жыл бұрын
Во вкладке "Подробности" на любом заголовке любого столбца ПКМ -> "Выбрать столбцы"
@vitalyrumeantsev21337 жыл бұрын
Очень нравятся ваши уроки. Но постоянно какие-то проблемы. В этом уроке проблема следующая.Прошу помочь, если кто может: Предыдущий вариант однопоточного собрался и работает. На основе его как и положено, создаю проект этого урока. Класс создаю так class QSocketThread : public QThread { // Q_OBJECT private: int SocketDescriptor; QTcpSocket *socket; public: QSocketThread(int descriptor); ~QSocketThread(); void run(); public slots: void onReadyRead(); void onDisconnected(); }; Далее создаю экземпляр класса void QSimpleServer::incomingConnection(int handle) { QSocketThread * sthread = new QSocketThread(handle); connect(sthread,SIGNAL(finished()),sthread,SLOT(deleteLater())); sthread->start(); } в run(): void QSocketThread::run() { socket = new QTcpSocket(); socket->setSocketDescriptor(SocketDescriptor); connect(socket,SIGNAL(readyRead()),this,SLOT(onReadyRead()),Qt::DirectConnection); connect(socket,SIGNAL(disconnected()),this,SLOT(onDisconnected()),Qt::DirectConnection); exec(); } Проект собирается и запускается, но когда происходит обращение к порту 80 ругается No such slot QThread::onReadyRead().... и No such slot QThread::onDisconnected().... Никак не пойму отчего он ищет слоты не в QSocketThread , а в QThread . Пожалуйста объясните мне идиоту, где я накосячил.
@vitalyrumeantsev21337 жыл бұрын
Переиграл коннекты сигналов со слотами с: connect(socket,SIGNAL(readyRead()),this,SLOT(onReadyRead()),Qt::DirectConnection); connect(socket,SIGNAL(disconnected()),this,SLOT(onDisconnected()),Qt::DirectConnection); на: connect(socket,&QTcpSocket::readyRead,this,QSocketThread::onReadyRead, Qt::DirectConnection); connect(socket,&QTcpSocket::disconnected,this,QSocketThread::onDisconnected, Qt::DirectConnection); И что интересно, заработало.
@deniszdorovtsov819511 жыл бұрын
выкладывайте исходники. лень.
@n0tfr3shm1lk11 жыл бұрын
не нужно выкладывать исходники! уроки простейшие! и если их не повторить самому, то в голове ничего не отложится!!!