Russian Qt Forum

Qt => Работа с сетью => Тема начата: Paul от Август 16, 2011, 15:41



Название: многопоточный TCP клиент
Отправлено: Paul от Август 16, 2011, 15:41
Здравствуйте, коллеги. Сейчас занимаюсь разработкой клиент-серверных приложений под QT. Организация многопоточной работы сервера с клиентами (по incomingConnection), описанная в док-ах ясна и по-большому счёту работает, и для Сервера, с натяжкой, передачу данных можно организовать, как Slot, в QThread приёмника, который висит на ожидании readyRead. Но для клиента приём/передачу надо бы развести по разным потокам, т.к. одновременное выполнение этих операций для клиента - рядовое дело, но как в этом случае обойти проблему "отцов-детей", м.б. надо создать новый сокет ??? Пожалуйста поделитесь своим опытом, я в QT - чайник. :) С уважением Paul


Название: Re: многопоточный TCP клиент
Отправлено: LisandreL от Август 16, 2011, 16:21
1) Сомневаюсь, что вы это на Quick Time напишете.
2) Что вы подразумеваете под проблемой отцов-детей?
Вам просто асинхронная работа сокетов нужна? Так там есть сигнал readyRead() для чтения, а запись и так асинхронна, если не вызывать waitForBytesWritten.


Название: Re: многопоточный TCP клиент
Отправлено: Paul от Август 16, 2011, 17:00
Lisandrel, спасибо за внимание. ("отцы-дети" - это запрет использования одного сокета в разных потоках) Есть опаска потери входных сообщений при "большой" передаче (а может - нет ???), Paul


Название: Re: многопоточный TCP клиент
Отправлено: merke от Август 16, 2011, 17:30
Ну если тебе нужна одновременная приемка-отправка, то делай сокеты IN-OUT. По одному сокету будешь слать на сервер запросы, а по второму сокету принимать. Хотя это не красиво...


Название: Re: многопоточный TCP клиент
Отправлено: Paul от Август 16, 2011, 17:36
Спасибо, Саша


Название: Re: многопоточный TCP клиент
Отправлено: Paul от Август 16, 2011, 17:56
Всем удачи, пока...