![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| REZiaMIX |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Задача - сформировать правильный пакет , с полями постоянной длины:
Буффер сообщения :
Есть структура:
Буффер для пакета:
Нужно заполнить какимто образом пакет , чтобы он выглядел следующим образом: Размер: 4 4 strlen(text) Структура: [packetheader] [ text ] Если сделать таким образом:
То выходит, что реальный размер head в памяти непостоянен и зависит от значений структуры. Как правильней сформировать пакет, чтобы можно было считать 4 байта(размер сообщения text),затем 4 байта тип пакета, затем текст в зависимости от заголовка пакета? -------------------- ![]() |
||||||||
|
|||||||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
Это почему ты так решил? head - структура из двух int-ов. Где изменение размера? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Хм , нашел ошибку у себя в исходнике , подправил , все работает.
Действительно , ступил((( Спасибо, еще один вопрос(наверное глупый): Если передавать эту структуру по сети и например на поле packet_type выделять только 2 байта? что произойдет? или же как можно при условии например что число будет не более 100, уменьшить кол-во памяти занимаемое переменной? -------------------- ![]() |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
unsigned char ом сделай. или вообще битовым полем. Семи бит будет достаточно. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
struct packetheader{
unsigned char bytes :7;// итого 14 бит - но смысла нет так как выделится на структуру все равно 2 байта unsigned char packet_type :7;// поэтому :7 не нужно }; Добавлено через 2 минуты и 14 секунд однако если тебе нужен тип int то можно так struct packetheader{ int bytes :8; int packet_type :8; }; итого два байта на структуру с ограниченым местом под хранение значений |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Всем спасибо за ответы , проблема решена.
-------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |