|
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 11
|
|
Как правильно работать с сокетами и потоками16.02.2016, 23:31. Показов 2428. Ответов 16
Метки нет (Все метки)
Есть сервер и пара клиентов, которые к нему подключаются... Использую потоки, -каждый сокет в своем потоке. Клиенты передают на сервер данные (файлы, например). Клиент1 передал Файл1, а Клиент2 передал Файл2... Сервер принял Файл1 и Файл2. Проблем с реализацией не возникло...
Вопрос! Возможно ли объединить данные из сокетов и обработать их по некоторому алгоритму, чтобы в итоге, передать на сервер только один новый Файл3? И с помощью каких средств это лучше реализовать?...
0
|
|
| 16.02.2016, 23:31 | |
|
Ответы с готовыми решениями:
16
Qt. как в протоколе UDP работать с несколькими сокетами?
|
|
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 11
|
|
| 17.02.2016, 12:58 [ТС] | |
|
А можите конкретнее ответить на вопрос?...
0
|
|
| 17.02.2016, 13:13 | |
|
Rida666, формировать tar архив.
0
|
|
|
20 / 20 / 2
Регистрация: 27.01.2014
Сообщений: 232
|
|
| 17.02.2016, 13:47 | |
|
Так сокеты и другая работа с сетью в Qt асинхронные. Нет смысла под сокет целый поток выделять.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 11
|
|
| 17.02.2016, 21:30 [ТС] | |
|
Есть Сервер (QTcpServer, QTcpSocket) и два Клиента (QTcpSocket). Клиенты отправляют данные (файлы) на сервер, тот их принимает. Для передачи данных используется, естественно, сокетное соединение. Каждый сокет я поместила в отдельный поток (QThread), - иначе что-то не срабатывало. Таким образом на Сервер приходят файл1 и файл2.
Далее, мне надо чтобы Клиенты работали в прежнем режиме – отправляли файлы на Сервер, но на Сервер должен приходить один файл3, который формируется, согласно некоторому алгоритму, из файла1 и файла2. Собственно, вопрос… как выцепить данные из разных потоков/сокетов чтобы, обработав их, отправить далее на Сервер? Я думаю использовать для этого сигнально-слотовый подход… каждый поток отправляет данные emit sentData(QByteArray), которые принимает, копит, обрабатывает и отправляет на Сервер – слот. Пока идея в процессе реализации и что-то не срастается… Является ли данный подход правильным и оптимальным?...
0
|
|
|
20 / 20 / 2
Регистрация: 27.01.2014
Сообщений: 232
|
||
| 17.02.2016, 22:13 | ||
По сабжу: Ничего непонятно, ты клиенты отправляют файл 1 и файл 2, но если это не один и тот же самый клиент для обоих файлов, как какой-то из клиентов может сшить свой файл с файлом чужого клиента и отправить на сервер?
0
|
||
|
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,279
|
|
| 17.02.2016, 22:33 | |
|
Не понятно, два клиента это отдельные программы или одна с двумя потоками?
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 11
|
|
| 17.02.2016, 22:56 [ТС] | |
|
alexu_007, два клиента - это отдельные программы
0
|
|
|
|
|
| 18.02.2016, 07:01 | |
|
Rida666
Дано: две абстрактные программы в абстрактных местах планеты, пересылающие файл1 и файл2. Найти: способ склеивать файл1 и файл2 в файл3 до прибытия на сервер. Решение: сделать бочку Если же мы переходим к требованию отправлять всё с одного пользователя одного компьютера, то всё, что нам необходимо - общая очередь для упаковки и отправки данных. Chromium, к примеру, для подобных задач имеет отдельный процесс, к которому все обращаются через pipes - именованные потоки. Для такой задачи решение - при запуске приложения запускать себя же с особым ключём, делающим из программы локальный сервер по любому из протоколов (stdin/pipes/sockets/etc). Остальные оставляют запросы склеить файлы и отправить на сервер. Сервер набирает заказов, по таймауту их склеивает и отправляет на сервер. Если есть жажда мук, так и делайте, да ещё и сервисное общение с сервером оставьте у клиентов.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 11
|
|
| 03.07.2016, 22:47 [ТС] | |
|
Остались вопросы... Как в режиме реального времени узнать, есть ли данные в сокете?
Необходимо производить обработку данных в режиме реального времени только с тех клиентов, которые передают данные на сервер. При этом, данные могут начать или перестать поступать любой момент.
0
|
|
|
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
|
||||||
| 04.07.2016, 20:46 | ||||||
|
Rida666,
http://doc.qt.io/qt-5/qabstrac... sAvailable Лучшего описания нигде не найдете. Только исходники.
0
|
||||||
|
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
|
|
| 07.07.2016, 15:24 | |
|
Олег_Б, Саммерфилд, конечно, хорош, но он знает меньше, чем официальная документация Qt, уж поверьте))
0
|
|
| 07.07.2016, 19:23 | ||
|
0
|
||
| 07.07.2016, 19:23 | |
|
Помогаю со студенческими работами здесь
17
Как правильно работать с пробелами в пути к файлам в mingw32-make? Как правильно работать с потоками? Как правильно работать с потоками в python? Как работать с сокетами в цикле? Общение между потоками с разными сокетами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|