|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
||||||||||||||||
Передача по UDP числа и массива в одном пакете06.08.2012, 15:16. Показов 8145. Ответов 26
Метки нет (Все метки)
Здравствуйте. Я в С++ новичок. Задача следующая: нужно передать по UDP пакет в котором первые 4 байта было бы число указывающие на кол-во записей в массиве (4 байта т. к. int), а потом шел массив структур.
Вот, например, есть у меня структура:
Заранее спасибо.
0
|
||||||||||||||||
| 06.08.2012, 15:16 | |
|
Ответы с готовыми решениями:
26
Подмена source IP в UDP пакете Передача массива байтов по UDP протоколу другому приложению Передача с микрофона в udp и прием из udp на динамик |
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 15:56 [ТС] | |
|
Спасибо за ответ, Jupiter. Но разве так число не будет идти отдельным пакетом?
0
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 06.08.2012, 16:01 | |
|
Jupiter, тогда массив пойдет отдельным пакетом (не факт, что первым).
Sanuch89, придется завести отдельную область памяти размером не более предельного размера пакета хранящую в начале индекс первого элемента части массива передаваемой в пакете и количество элементов части массива передаваемой в пакете, пробегать по массиву и передавать его по кусочкам предварительно копируя в описанную служебную область с заполнением соответствующих полей. Добавлено через 1 минуту ...ну или если он умещается в один пакет все закончится на первом же пакете, а передавать начальный индекс будет необязательно
1
|
|
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|||||||||||
| 06.08.2012, 16:16 [ТС] | |||||||||||
|
Спасибо, Vxg. Я примерно понял, вот только не знаю как реализовать твои слова.
Я пробовал реализовать все через массив
Но после передачи клиентом
0
|
|||||||||||
|
|
|
| 06.08.2012, 16:17 | |
|
Sanuch89, передавай размер массива как его нулевой элемент а само наполнение массива индексируй с 1-го элемента, т.е вместо N элементов в передаваемом массиве будет N + 1 элемент - просто и сердито
0
|
|
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 16:23 [ТС] | |
|
Юра, так я и пытался сделать. А как в массив запихнуть разные типы данных? Только если массив типа char* mas[10]? Или можно как-то?
0
|
|
|
|
|||||||
| 06.08.2012, 16:25 | |||||||
1
|
|||||||
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 16:32 [ТС] | |
|
Спасибо, Юра. Получается к своей структуре мне нужно добавить int iVal. Она будет заполнена только в нулевом элементе массива, а в остальных она будет пуста? А память под нее будет выделяться и расходоваться в пустую...
0
|
|
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 16:40 [ТС] | |
|
novi4ok, знаю. Нужна быстрая передача большого количества однотипных данных. Не я так решил
Просто выполняю задание.
0
|
|
|
|
|||||
| 06.08.2012, 16:50 | |||||
|
Добавлено через 2 минуты
Тогда задание решается вообще просто int mass[11] = {0}; mass[0] = 10; в остальных элементах твои значения
0
|
|||||
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|||||||
| 06.08.2012, 17:01 [ТС] | |||||||
|
Структура такая:
0
|
|||||||
|
|
||||||||
| 06.08.2012, 17:13 | ||||||||
|
Моя цитата
1
|
||||||||
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 17:22 [ТС] | |
|
Ага, вот теперь понял, что ты имел ввиду
Спасибо!А чисто теоретически, можно сделать чтобы первыми в пакете были именно 4 байта int'a, а не структура?
0
|
|
| 06.08.2012, 17:34 | |
|
0
|
|
|
12 / 12 / 2
Регистрация: 04.08.2011
Сообщений: 57
|
|
| 06.08.2012, 17:49 [ТС] | |
|
Ещё раз спасибо
0
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 06.08.2012, 19:45 | |
|
Никто не упомянул довольно важный момент (я не знаю, нужно ли это писать и в курсе ли автор темы, просто почему-то никто никогда об этом не пишет):
1) Хранение многобайтовых целых в компьютере зависит от архитектуры процессора ( Ознакомиться можно тут http://ru.wikipedia.org/wiki/Порядок_байтов ) 2) Чтобы программа работала на разных архитектурах, необходимо преобразовывать мультибайтовые целые в сетевой порядок байтов перед отправкой, а также проделывать обратную операцию после их получения на приёмнике. Тут ещё немного по теме и по функциям http://beej.us/guide/bgnet/out... #byteorder Если этого не сделать, то есть шанс получить мусор на приёмнике.
1
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|||||||||||
| 07.08.2012, 12:08 | |||||||||||
|
необязательно делать первую запись массива фиктивной и использовать ее для хранения количества элементов.
если вы хотите одновременно работать с массивом структур и передавать его вам подойдут конструкции вида:
Добавлено через 2 часа 18 минут ...пардон, вместо union пишем struct
1
|
|||||||||||
| 07.08.2012, 14:48 | |
|
И что, никто не вспомнил про сериализацию? "Стыдно, товарищи!" (с)
0
|
|
| 07.08.2012, 14:48 | |
|
Помогаю со студенческими работами здесь
20
Классы в одном пакете, но не видят друг друга Мантисса числа в пакете Mathematica передача по udp Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|