![]() |
|
Модераторы: feodorv |
![]()
|
|
| eXa |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.12.2006 Репутация: нет Всего: нет |
При проверке в сеть отправляется следующее:
а должно
откуда вылезает лишний байт? я думаю что это дело в выравнивании, можете пояснить?
и как правильно чар передавать? поидее по таблице ascii должен отправить символы, а отправляются нули
Это сообщение отредактировал(а) eXa - 26.1.2008, 14:34 |
||||||||||
|
|||||||||||
| JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
это указатель. Памяти выделять кто-будет? заводи константу типа
в неё
И тогда заработает. |
||||
|
|||||
| eXa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.12.2006 Репутация: нет Всего: нет |
Да! Точно! Спасиб!
Осталось избавиться от лишних байт. Ведь же это в выравнивании дело, да? хотя нее... странно получается он выделяет 8 байт под тип WORD *code* BYTE t1; BYTE t2; WORD t3; WORD t4; DWORD t5; WORD t6; WORD t7; CHAR t8[10]; packet.t1 = 0x2A; packet.t2 = 0x01; packet.t3 = 0xA401; packet.t4 = htons(30); packet.t5 = htons(1); packet.t6 = htons(1); packet.t7 = htons(len); strcpy(packet.t8, "test"); *endcode* -------------- 2A 01 A4 01 00 5E 00 00 00 01 00 00 00 01 00 04 74 65 73 74 ------------- Это сообщение отредактировал(а) eXa - 25.1.2008, 19:20 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
это 4-е байта и дело действительно в выравнивании, поставь нужную прагму компилятору |
|||
|
||||
| eXa |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.12.2006 Репутация: нет Всего: нет |
извеняюсь за не точность
не просто поставить, а ещё с параметром подходящий для моей структуры, вот чтот нашёл,читаю, попробывал, но никак не могу вникнуть, как определить какое выравнивание мне нужно? Выравниваю так, запись идёт также
Это сообщение отредактировал(а) eXa - 25.1.2008, 20:35 |
||||||
|
|||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
выравнивание в таких случаях ставится 1 байт. Добавлено через 20 секунд #pragma pack(push, 1) |
|||
|
||||
| eXa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.12.2006 Репутация: нет Всего: нет |
при выравнивании на 1(пробывал и 2, 4, 6, 8, 16) байт dword может принимать при отправке такое 00 00 01 00 значение и такое при конвертации htons 00 00 01 00, а мне надо 00 00 00 01
Это сообщение отредактировал(а) eXa - 26.1.2008, 01:43 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
||||
|
||||
| eXa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.12.2006 Репутация: нет Всего: нет |
Код:
Вывод: 2A 01 01 A4 00 58 00 01 00 00 00 01 00 04 74 65 *....X........te 73 74 st Это сообщение отредактировал(а) eXa - 26.1.2008, 14:42 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |