|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
Варианты передачи потока разных данных08.10.2015, 16:53. Показов 6567. Ответов 84
Метки нет (Все метки)
У меня есть TCP клиент под андроид и TCP сервер на Qt под Windows. Мне нужно передать сначала большой обьем текстовых данных а затем передать изображение. Так вот проблема в том что по TCP все данные передаются одним потоком(то есть TCP гарантирует только надежность и порядок передачи данных, но что и когда будет прочитано не известно). Так вот вопрос такой. Во первых мне нужно передать текстовые данные разного назначения(ну к примеру, контакты, текстовые сообщения и тп) а на сервере соответственно эти текстовые данные нужно разделить и сгруппировать каждые в свой текстовый файл(ну соответсвенно если мы берем контакты они должны быть записаны на сервере в файл контактов, сообщения в файл сообщений и так далее). Так вот чтобы удобнее эти данные рассортировать на сервере как лучше их передавать в виде JSON и на сервере парсить этот JSON или же разделить эти группы данных какими нибудь разделителями(типа @,# и тп) и на сервере соответвенно выделять из буфера данные между этими разделителями??
И второе: Мне также нужно передавать изображение на сервер. Так вот как мне правильно отделить байты изображения от этих прочих данных чтобы изображение сохранить на сервере отдельно в файл?? Как лучше всего упаковать и отправить эти данные на клиенте андроид так чтобы их было легко рассортировать потом на сервере?? Подайте идею?? заранее благодарен
0
|
|
| 08.10.2015, 16:53 | |
|
Ответы с готовыми решениями:
84
Возможные варианты передачи данных с не лотусового веб сервера в Lotus Скорость передачи данных именованного потока Использование DLL для приема-передачи данных в разных приложениях |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.10.2015, 16:48 | ||
|
Передаешь его как текстовое сообщение а внутри OnMessage расшифровываешь тоже автоматом состояний. Для этого в принципе существуют готовые библиотеки обычно в наборе той библиотеки которую используешь.
0
|
||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 13.10.2015, 16:57 [ТС] | |
|
расшифровываешь - это имеется ввиду парсинг JSON??
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 13.10.2015, 17:29 | |
|
0
|
|
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 13.10.2015, 17:38 [ТС] | |
|
то есть я так понял файлы по tcp можно передавать только по байтам и большие файлы нужно резать при передаче?? Но есть же функция transmitfunction() или как то так которая по tcp передает сразу файл а как работает она??
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 13.10.2015, 18:14 | |
|
Общий принцип - через сокет идет поток байт. Для того чтобы управлять потоком (т.е. определять что именно (какого типа, какого назначения и т.д) в данный момент передается и сколько) вклиниваются метаданные (разделители, символы начала и конца блоков, размер блоков и т.п).
Для файла естественно куча вариантов в зависимости от того бинарный он или текстовый и того какая информация еще о нем должна быть передана. В общем случае файл удобнее рассматривать как бинарный. Определяешь структуру описания файла файла. и приклеиваешь в передачу перед бинарными данными файла, вместе с командой "передаю файл". Принимающая сторона принимает команду, по ней включается в режим ожилания файла, из первого куска вырезает структуру описания, по ней производит подготовку места для приема (хранилище), последующие за структурой описания данные складирует в подготовленное место. По концу приема закрывает хранилище и переходит в режим ожидания новой команды. Т.е. принимающая часть - это автомат выполняющий команды передающей.
0
|
|
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 13.10.2015, 20:21 [ТС] | |
|
А как читать данные и записывать в звуковой файл на Qt?? Я знаю что звуковой файл состоит из заголовка и данных. В заголовке хранятся метаданные(частота и прочее). Можете дать ссылку на код как можно прочитать заголовок и данные звукового файла в буфер а потом записать этот буфер в другой созданный wav файл??
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.10.2015, 20:44 | ||
|
Если при просто передаче - то тебе неважно что там внутри. Просто набор байт длины n обозванный именем name. Если вообще - то зависит от формата файла. С этим в MSDN. Блин, вот кучу раз обрабатывал звук на лету (прям с микрофона) а писать в файл не приходилось. А данные с АЦП если и писал то в файл своего формата.
0
|
||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 13.10.2015, 20:48 [ТС] | |
|
Нет не по сети а вообще чтение запись звуковых файлов можно примерчик кода небольшой как это делать?? Я так понял сначала надо писать заголовок а потом данные?? А что в заголовке хранится?? там помоему частота и что еще??
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.10.2015, 20:56 | ||
|
Добавлено через 3 минуты Вот тут простой примерчмк с расписанной структурой заголовка http://www.codeproject.com/Art... -WAV-Files
0
|
||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
||
| 13.10.2015, 21:10 [ТС] | ||
|
а по сети мне нужно данные заголовка передавать если я хочу передать звуковой файл с клиента на сервер и на сервере его проиграть этот файл??
Добавлено через 2 минуты там же перед байтами нужно заголовок в файл записать
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.10.2015, 21:26 | ||
|
0
|
||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 13.10.2015, 22:42 [ТС] | |
|
а если допустим я передаю данные и в этот момент пропал вай фай или с соединением что то. Но передача идет по TCP что в этом случае будет с пакетом он пропадет или когда появится(восстановится) соединение все равно повторно отправится на сервер?? Да на счет подхода я понял, но на счет звукового файла меня интересует не столько сама передача сколько какие данные нужно писать в заголовок звукового файла чтобы нормально его воспроизвести на сервере??Я так понимаю что сначала надо записать заголовок а потом уже сами данные в звуковой файл?? А что в этот заголовок и в каком порядке нужно писать не пойму
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.10.2015, 22:59 | |||
|
Добавлено через 3 минуты
0
|
|||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
||
| 14.10.2015, 00:28 [ТС] | ||
Добавлено через 7 минут К тому же помоему нужно записывать в заголовок число каналов и так далее верно??
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 14.10.2015, 01:29 | |||||
|
0
|
|||||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|
| 19.10.2015, 14:33 [ТС] | |
|
а если я использую tcp написанный на Qt то в случае обрыва соединения нужно ловить сигнал disconnected()??
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 19.10.2015, 16:17 | ||
|
0
|
||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
||
| 19.10.2015, 16:41 [ТС] | ||
|
Всмысле вы имеете ввиду посмотреть документацию по ServerSocket Qt какие есть сигналы да??
Добавлено через 10 минут
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 19.10.2015, 18:03 | ||||
|
Добавлено через 6 минут Добавлено через 4 минуты
0
|
||||
|
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
|
|||||||||||
| 19.10.2015, 19:48 [ТС] | |||||||||||
Добавлено через 2 минуты
0
|
|||||||||||
| 19.10.2015, 19:48 | |
|
Модель передачи потока пакетов Что будет, если два разных потока попытаются отправить одновременно одному клиенту два разных пакета Сборка системника: варианты в разных ценовых категориях. Оптимизация передачи классов и методов и их обработки в разных модулях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|