|
Вопрос # 3 054/ вопрос открыт / |
|
Здравствуйте, эксперты!
Что означает термин "бинарный протокол"?.
А также что означает "Числовые данные НЕ в сетевом формате"? А что такое сетевой формат числа и с чем его едят?
 |
Вопрос задал: Roman Novikov (статус: Посетитель)
Вопрос отправлен: 31 июля 2009, 00:53
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Roman Novikov!
в программерском мире принято два формата - текстовый и бинарный. при этом любой текстовый есть бинарным, но не наоборот. Бинарный формат может содержать любые байты, текстовый - только "читаемые", то есть с кодами от 32 до 127 (или 254 или 255 - все зависит от кодовой таблицы, но до 127 - гарантировано) плюс спецсимволы - перевод строки, забой, таб (8,9, 10, 13). Также текстовый формат не содержит нулей в середине.
Но в целом деление условно.
"Числовые данные НЕ в сетевом формате" - есть два основных формата записи числа в бинарном виде - прямой и обратный, они же (BigEndian и LittleEndian). Разница в том, какой байт, младший или старший идет вначале. На платформе интел/амд(х86) первый идем младший байт. А в моторолловских процессорах (68ххх) прямой. Сетевой формат - всегда прямой.
Советую почитать здесь http://ru.wikipedia.org/wiki/Сетевой_порядок_байт
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 31 июля 2009, 02:57
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 4 августа 2009, 11:28; участников в обсуждении: 2.
|
Roman Novikov (статус: Посетитель), 4 августа 2009, 10:31 [#1]:
Должен ли я при написании протокола как-то беспокоиться о формате записи числа (в сетевом/не сетевом). Когда и как это следует учитывать?
Смотрел описание протокола mail.ru-Агента и не онял к чему там указано что все числа сетевом формате (первым идет старший байт). Они в С++ определяют все числовые параметры в заголовке как целый четырехбайтный DWORD.
|
|
Вадим К (статус: Академик), 4 августа 2009, 11:28 [#2]:
да, следует думать.
Учитывать нужно тогда, когда в сокет пишуться данные напрямую, то есть в виде Write(@i, sizeof(i));
Но если с другой стороны если на той стороне система с такой же плаформой, то всё будет хорошо (думаю в Вашем случае это будет выполнятся на 99.9%).
"Смотрел описание протокола mail.ru-Агента и не онял к чему там указано что все числа сетевом формате (первым идет старший байт)."
Потому что
"Они в С++ определяют все числовые параметры в заголовке как целый четырехбайтный DWORD."
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|