Я уже пару дней бьюсь над этой проблемой в QTcpSockets и QThreads.
У меня есть QTcpServer, который прослушивает порт и создает нового клиента, используя nextPendingConnection ().Итак, теперь у клиента есть qtcpsocket, который я могу использовать для чтения и записи.
Предположим, у меня есть 100 клиентов, подключенных к моему серверу.Когда один из них хочет передать сообщение всем, мой основной поток (где я создаю клиентов с помощью nextPendingConnection ()) должен будет перебрать более 100 клиентов и вызвать метод write для их сокетов.Если, например, 10 пользователей одновременно вещают, мне придется сделать 1000 итераций, поэтому, по моему мнению, на стороне клиента будет некоторая задержка (когда пользователь получит сообщения).
Я бы хотелделать все записи сокетов в отдельных потоках, чтобы я мог отправлять данные в параллельном режиме.Я знаю, что не могу вызвать сокет из другого потока из того, в котором он был создан, и я не хочу использовать один поток для каждого клиента, потому что я не знаю, хорошо ли иметь много потоков(кроме того, эти потоки должны работать всегда, пока клиент не отключится).
Я прочитал пример сервера thread удачи, но он не отвечает на мою проблему, потому что они разрушают сокет после отправки данных;Я не хочу разрушать свой сокет, потому что я должен прослушивать его для входящих сообщений (чтобы я мог их транслировать).
Одна вещь, о которой я подумал, - это иметь 2 сокета для каждого клиента (насервер и на стороне клиента);так что я оставляю один сокет для чтения, а другой могу использовать как в примере с сервером потока удачи;в этом случае я бы также использовал пул потоков, чтобы ограничить количество задач (в противном случае это было бы то же самое, что использование одного потока на клиента).
Не могли бы вы указать мне правильное направление или дать мненекоторые подсказки о том, как реализовать запись сокета paralel без фактического использования одного потока на клиента ...?
С наилучшими пожеланиями,
Себастьян