![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
kas |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 16.6.2010 Пользователь №: 1813 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
здравствуйте! возникла проблема с QTcpSocket. Есть простой клиент, который читает блоками файл и отправляет его на сервер. Сервер: получает данные и записывает их на диск. И возникает такая проблема, что при приеме данных, в некоторый момент времени перестает посылаться сигнал readyRead. При этом данные в буфер сокета записываются и они доступны для чтения. Кто-нибудь сталкивался с такой проблемой? Подскажите в чем может быть причина. Заранее спасибо.
|
|
|
![]() |
PAFOS |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Может быть не в этом проблема, но все равно у тебя баг:
void dbClientThread::run() { s=new QTcpSocket(this); .... у тебя родительский объект будет экземпляр dbClientThread, который создан в потоке А. а сам создаваемый объект будет находится в потоке Б В связи с этим сигналы от QTcpSocket будут обрабатываться в потоке А (или могут вообще до него не доходить, я точно не помню) Я делаю так: dbClientThread *thread = new dbClientThread(); thread->start(); thread->moveToThread(thread); // теперь все методы dbClientThread будут обрабатываться в потоке, который был создан в методе run(). т.е. теперь thread обрабатывает сам себя ну и в методе dbClientThread::run() при создании сокета не указывай родителя. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.7.2025, 7:56 |