Russian Qt Forum
Апрель 26, 2024, 16:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Многопоточный сервер на Qt - передача сокетов между потоками  (Прочитано 2518 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Апрель 21, 2016, 00:47 »

Здравствуйте.
Возникла задача написать такой сервер:
Сервер должен получить данные от клиентов, провести над ними некоторые вычисления и вернуть результат клиенту.
В процессе вычислений могут поступать новые запросы.

Пытаюсь сделать так:
Ввёл структуру, в которой запоминаю сокет клиента, которому надо отослать результат работы с data_.
Код
C++ (Qt)
struct ThreadData
{
     Data data_;
     QTcpSocket* socket_;
};
и очередь QQueue этих структур, которая заполняется в основном потоке

Вычисления крутятся в отдельном потоке наследнике QThread.
Данные извлекаются из очереди, обрабатываются, и отправляются клиенту с помощью
Код
C++ (Qt)
socket_->write()
, если очередь пуста, крутится бесконечный цикл.

Фактически, из потока вычислений данные НЕ ДОХОДЯТ до клиента, хотя write завершается без ошибки.
В основном потоке данные по тому же сокету отправляются и доходят.

Читал где то на другом форуме, что сокеты нельзя передавать между потоками.
Так ли это? И как надо поступать?
« Последнее редактирование: Апрель 21, 2016, 00:49 от qtkoder777 » Записан
VozaMFC
Гость
« Ответ #1 : Апрель 26, 2016, 15:29 »

 В доках кьюти есть очень неплохие примеры по сокетам и потокам. А главное вам нужно разобраться с работой потока что бы потом реализовать задуманное на стороне сервера.
« Последнее редактирование: Апрель 26, 2016, 15:37 от VozaMFC » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 22.