|
|
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Товарищи, подскажите пожалуйста какую нить книжку где доступно описано как работать с битами, байтами, пакетами, заголовками пакетов, контрольными сумами и прочим. Чтоб с примерчиками и тп. Может статья есть тут какая то? Стыдно конечно, но с момента окончания колледжа не приходилось в жизни сталкиваться с этим. И тут на тебе - дали задание на работе (C#). А я вообще не бум бум... Читаю ТЗ и протокол взаимодействия с устройством а там сплошь и рядом незнакомые слова. Помогите пожалуйста. Очень срочно надо. А если вдруг кто сподобится на краткое вводное объяснение что есть что, или типа того, буду очень признателен. Только пожалуйста без сарказма - сам понимаю примитивность вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 19:21 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Может все-таки книжку прочитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 19:28 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
J_Mnemonic, Вы хоть немного обозначьте тему. А то все сразу покрыть не получится, нам, например, одни только биты и байты в институте два или три семестра Соловьев рассказывал на ОТОВС-е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 19:39 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
skoleМожет все-таки книжку прочитать? Ну таки да ) я это и прошу (в том числе) Просто учитывая ограниченность по времени задачи, мне бы какие то точечные указания по обозначенным мною пунктам. miksoftА то все сразу покрыть не получится, нам, например, одни только биты и байты в институте два или три семестра Соловьев рассказывал на ОТОВС-е. да, я это понимаю и это меня пугает... :(( miksoftВы хоть немного обозначьте тему. даже не знаю что именно обозначить... Ну вот пример куска ТЗ: Структура пакета Заголовок 0x01 1 байт Длина пакета 2 байта Признак наличия неотправленных данных в архиве 1 бит Тэг 1 1 байт Данные, соответствующие тэгу 1 зависит от типа тэга … Контрольная сумма 2 байта Вот можно как нить это более мене доступным языком расшифровать? Причём чем дальше я читаю ТЗ, тем больше понимаю что мне каюк .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 20:32 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Формируйте пакеты в поток и грудью на сокеты, вас же не переопределять TCP протокол заставляют. Стандартная задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 20:42 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
очень информативно )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 20:45 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Что тут еще рассказывать? Пример написать? Я и на работе написался. Берешь байт, определяешь, кидаешь в массив, затем следующий, другой и т.д., получается пакет, открываешь сокет, устанавливаешь соединение по TCP, передаешь, ждешь подтверждения, что все байты дошли, закрываешь соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 20:51 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
нууу. воот. Уже что то )) а ещё что нить вкусненькое есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 20:56 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Вкусненькое на codeproject.com, а здесь болтология. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 21:05 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
ну например. как понять эту строку: Заголовок 0x01 1 байт это значит что пришёл ко мне пакет 32 битный (тоесть 32 штуки нулей и едениц грубо говоря) и самый первый бит у него - это заголовок? (тоесть либо 0 либо 1)? он кстати и является старшим для всего пакета? или вот это: Длина пакета 0x1A00 2 байта как это можно описать в том стиле что я описал? и правильно ли я описал первый - заголовок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 23:36 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
ой не. пакет аказца не 32 битный, а 32 байтный... получается под заголовок (1 байт) выделено первые 8 бит? грубо говоря вот он заголовок: 000000001 (или любые комбинации из 8 битов) ну что тогда означает это - Заголовок 0x01? что этим хотели сказать? и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 23:49 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
J_MnemonicНу вот пример куска ТЗ: Структура пакета Заголовок 0x01 1 байт Длина пакета 2 байта Признак наличия неотправленных данных в архиве 1 бит Тэг 1 1 байт Данные, соответствующие тэгу 1 зависит от типа тэга … Контрольная сумма 2 байта Вот можно как нить это более мене доступным языком расшифровать?Думаю, общую теорию тут штудировать не горит. Почитайте или поспрашивайте как такие вещие хранятся в используемом языке программирования. Структурой, массивом байтов или еще как... Возможно, окажется достаточно, чтобы кто-то (или профильном подфоруме, или в реале кто-то из более опытных коллег) просто ткнул пальцем в нужный раздел доки/хелпа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 00:34 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
J_Mnemonicну что тогда означает это - Заголовок 0x01? что этим хотели сказать? То, что первый байт (по порядку следования) является заголовком . А записано в нём может быть всё, что угоднодопустимо по ТЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 08:23 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
а вот ещё такое. из описания протокола. IMEI* – идентификатор модуля (восьмибайтовое целое); и далее следует типа описан пример: ...сначала он посылает свой IMEI (15 байт) и версия протоколо (3 байта). Например, IMEI 123456789012345 версия протокола 1.1 передадутся как 313233343536373839303132333435312E31. Объясните пожалуйста. Я не понимаю во-первых почему говорится IMEI - 8 байтовое, а посылается 15 и во-вторых - в какой системе исчисления представлены тут 123456789012345 и 1.1 Явно не в шестнадцатиричной.... Я чего то не допонимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 17:23 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
J_Mnemonicа вот ещё такое. из описания протокола. IMEI* – идентификатор модуля (восьмибайтовое целое); и далее следует типа описан пример: ...сначала он посылает свой IMEI (15 байт) и версия протоколо (3 байта). Например, IMEI 123456789012345 версия протокола 1.1 передадутся как 313233343536373839303132333435312E31. Объясните пожалуйста. Я не понимаю во-первых почему говорится IMEI - 8 байтовое, а посылается 15 и во-вторых - в какой системе исчисления представлены тут 123456789012345 и 1.1 Явно не в шестнадцатиричной.... Я чего то не допонимаю? Потому что 15 символов. Ну, то есть протокол предусматривает общение с помощью строк. А строка - это набор символов (в данном случае символы от 0 до 9), каждый из которых будет закодирован в один байт (то есть числовое представление символа). Вот и получаем 15 байт. Для примера. мы число 200 можем записать как число в 1 байт (0xC8), но если мы будет его писать как строку, то запишем в 3 байта (по байту на символы 2, 0, 0). Версия протокола по тому же принципу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 19:11 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
P.S. Насколько помню, байты (как и биты) обычно любят нумеровать с нулевого, а не с первого (то есть первый по сути будет уже вторым... после нулевого). Хотя могу ошибаться, так как в разные протоколы вникать не приходилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 19:14 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Програмёр, спасибо большое! Сейчас вот заглянул в "Таблицу символов" и действительно увидел что всё соответствует. Получается у цифры 1 и у строки 1 разное шестнадцатиричное значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 19:37 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
J_MnemonicПрограмёр, спасибо большое! Сейчас вот заглянул в "Таблицу символов" и действительно увидел что всё соответствует. Получается у цифры 1 и у строки 1 разное шестнадцатиричное значение? Конечно. Число - это прямое значение хранимое в ячейке памяти. А символ - это уже представление этого значения из ячейки человеку. То есть оно проходит преобразование по таблицам (разные кодировки - разные символы при одинаковом значении). Ну вроде остальное из представленного по протоколу понятно. Разве только вижу с заголовком проблемы возникли... Так вот, заголовок пакета - это обычно его описание... Туда вталкиваются обычно сервисные значения по пакету (тип пакета, тип данных пакета и т.д.) Так что он может описываться любым количеством байт/бит. Его возможные значения обычно описываются в документации к протоколу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 20:15 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
skoleЧто тут еще рассказывать? Пример написать? Я и на работе написался. Берешь байт, определяешь, кидаешь в массив, затем следующий, другой и т.д., получается пакет, открываешь сокет, устанавливаешь соединение по TCP, передаешь, ждешь подтверждения, что все байты дошли, закрываешь соединение. Когда используешь TCP, не надо ждать подтверждения. Потому что не бывает, что байты не дошли. Есть такая книжка, называется Стивенс и другие. Название не помню. Но автор и так выведет. Ну ещё про модель OCI можно причитать, это достаточно в википедии. И чтобы на всякий случай отмести всякие сомнения про OCI — модель на практике не применяется, применяется только главный принцип, только поэтому ее и надо знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 21:19 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
MasterZivКогда используешь TCP, не надо ждать подтверждения. Потому что не бывает, что байты не дошли.шо, даже при выдернутом сетевом шнуре доходят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2013, 19:49 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
Странно. Судя по таблице, а она в показывает символы в Unicode, строка "1.1" соответствует 0x31, 0x2E, 0x31 пытаюсь перевести эти байты в строку и посмотреть на неё через MessageBox выходят другие иероглифы (в приложеннии) вот так перевожу символ Unicode в строку и показываю Код: c# 1. 2. что не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2013, 12:11 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
всё. решился вопрос ) делаю так: Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2013, 12:24 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
tanglirMasterZivКогда используешь TCP, не надо ждать подтверждения. Потому что не бывает, что байты не дошли.шо, даже при выдернутом сетевом шнуре доходят? Иногда да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:25 |
|
||
|
Биты, байты, пакеты и прочие "киты"
|
|||
|---|---|---|---|
|
#18+
MasterZivtanglirпропущено... шо, даже при выдернутом сетевом шнуре доходят? Иногда да. Ну да ладно. По wifi? :) "Гарантированный" протокол передачи данных не гарантирует, что переданные данные 100% прийдут адресату. Он гарантирует, что любые данные, полученные адресатом являются правильными. Так что при выдёргивании кабеля адресату будет сообщено об утери соединения и всё. Данные никаким магическим образом к нему не долетят. P.S. чисто моё мнение на основании статей, прочитанных мной ранее во время краткого увлечения протоколами передачи данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 18:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38280769&tid=1341786]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 300ms |
| total: | 533ms |

| 0 / 0 |
