![]() |
|
Модераторы: feodorv |
![]()
|
|
| sergu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
Понимаю что подобная тема поднималась много раз, но все же.
Ситуация следующая: Есть структура
Неоходимо отправить данные из этой структуры в сеть. Естественно, что не разумно слать в сеть структуру размером 2053 байта, если в buff[] содержит, например, 5 нужных символов. Думаю, что рациональным режением этой проблемы, является созданием буфера типа char, в который будет упаковываться эта структура. Допустим, что в массиве buff[] у нас хранится 10 символов. Соответственно в переменной length_buff хранится число 10, ну а в char a любое значение. Плучается, для того чтобы отправить инфу из этой структуры, нам нужно создать буфер send_buff[] размером 15 байт. В первом байте у нас хранится значение из char a, в со второго байта по пятый int length_buff, а в следующих десяти байтах buff. Ну и после того как мы упаковли поля делаем отправку send(socket, send_buff, send_buff_length); Хотелось бы узнать: 1 - как лучше объявить send_buff (статически или динамически). 2 - как, собственно, производить упаковку. 3 - как заполнить структуру значениями из массива Кстати. Насчет 32 и 64 разрядов. В моем учебном протоколе строго оговорен, тип и размер данных т.е., например, целое беззнаковое число размером 4 байта. простите непутевого Это сообщение отредактировал(а) sergu - 13.4.2008, 23:42 |
|||
|
||||
| sergu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
Вот примерное решение проблемы. Прошу товарищей постарше прокоментировать программку и, если можно, дать советы по рациональности и безопасности кода кода.
Спасибо |
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
чет какая-то фигня)
в общем ябы делал например так (упрощенно ессно для понимания): если сткрутара данных статична (ну, например, строку надо передать), тогда
а ошибок-то у меня огого....)) ну в общем суть, думаю понятно : заголовок, потом данные. Это сообщение отредактировал(а) jonie - 14.4.2008, 00:53 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: нет Всего: 17 |
sergu,
strncpy копирует до первого попавшегося нуля. если в ST::buff - могут быть не только строки, то распаковать не получится. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |