Название: передача указателя на сокет в поток Отправлено: Mark_T от Май 26, 2011, 12:48 Всем мое здравствуйте! Задача у меня такая. Есть основной поток в котором создается сокет QTcpSocket и поток Thread
Код: class Thread:public QThread Код: mThread.setSocket(tcpSocket); Код: connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(slotError(QAbstractSocket::SocketError))); Многопоточное приложение пишу впервые, прошу строго не судить и оказать посильную помощь ))) Название: Re: передача указателя на сокет в поток Отправлено: LisandreL от Май 26, 2011, 13:08 Поток не выходит из run, поэтому по повторному start ничего не происходит.
Название: Re: передача указателя на сокет в поток Отправлено: Mark_T от Май 27, 2011, 13:12 Третий день ломаю голову, пытался и через exit и через wait, не получается. Может, кто напишет готовый код. Был бы очень благодарен. Притом, хотелось бы получить код и для завершения потока (переконекта) и для получения сигнала ошибок. Заранее благодарен.
Название: Re: передача указателя на сокет в поток Отправлено: Авварон от Май 28, 2011, 03:18 Выкиньте поток.
Название: Re: передача указателя на сокет в поток Отправлено: Mark_T от Май 30, 2011, 12:23 Оъявляю теперь поток через mTread=new Thread().Глушу поток через delete() . Проблема в том, что теперь сигнал readyRead вызывается только при попытке что то записать в сокет. То есть если мне что-то пришло, то получу я это только после попытки записи. В однопоточном приложении все пучком.
Название: Re: передача указателя на сокет в поток Отправлено: LisandreL от Май 30, 2011, 14:33 Невидя нового кода трудно что-то советовать, но попробуйте принудительно поставить Qt::QueuedConnection для этого сигнала.
Название: Re: передача указателя на сокет в поток Отправлено: ddrtn от Июнь 01, 2011, 14:30 Передавать указатель на сокет в поток нехорошо. лучше передать туда дескриптор сокета. а там уже создать новый объект класса QTcpSocket и передать ему этот дескриптоы (setSocketDescriptor). Единственно, если Вы получаете указатели на сокеты от QTcpServer, то в этом случае лучше отказаться от newConnection ()/nextPendingConnection () и в наследнике от QTcpServer переписать incomingConnection
Название: Re: передача указателя на сокет в поток Отправлено: Mark_T от Июнь 01, 2011, 20:41 ух ты, тепреь осталось это все обдумать и реализовать. Спасибо огромное!
|