Итак, пришел час расширения протокола HTTP. Теперь он становится асинхронным. В общем-то, не совсем новость, просто более-менее широкий обзор на русском языке я только что нашел:
http://habrahabr[dot]ru/blogs/webdev/79038/
1. EuGen - 25 Декабря, 2009 - 10:46:53 - перейти к сообщению
2. movEAX - 25 Декабря, 2009 - 11:36:13 - перейти к сообщению
Интересная статья. Но кое чего я так и не докурил:
0x81 = 129;
0x20 = 32;
129+32 = 161...
Что я упустил?
ps: за ссылочку спасибо!
Цитата:
Объект размером 160 байт закодируется 2 байтами длины:
0x80, 0x81, 0x20, <байты объекта>
0x80, 0x81, 0x20, <байты объекта>
0x81 = 129;
0x20 = 32;
129+32 = 161...
Что я упустил?
ps: за ссылочку спасибо!
3. EuGen - 25 Декабря, 2009 - 11:45:04 - перейти к сообщению
Цитата:
Чтобы не создавать ограничений на длину передаваемого сообщения и в тоже время не расходовать байты нерационально, разработчики использовали очень хитрый способ указания длины тела сообщения. Каждый байт в указании длины рассматривается по частям: самый старший бит указывает является ли этот байт последним (0) либо же за ним есть другие (1), а младшие 7 битов содержат собственно данные
Чтобы не создавать ограничений на длину передаваемого сообщения и в тоже время не расходовать байты нерационально, разработчики использовали очень хитрый способ указания длины тела сообщения. Каждый байт в указании длины рассматривается по частям: самый старший бит указывает является ли этот байт последним (0) либо же за ним есть другие (1), а младшие 7 битов содержат собственно данные
4. movEAX - 25 Декабря, 2009 - 13:05:11 - перейти к сообщению
EuGen пишет:
Каждый байт в указании длины рассматривается по частям: самый старший бит указывает является ли этот байт последним (0) либо же за ним есть другие (1), а младшие 7 битов содержат собственно данные
Старший бит не учитываем, ок, тогда получаеться следующее:
0x81 => 1000 0001 => не учитываем старший бит =>0000 0001 =>1;
0x20 => 0010 0000 => не учитываем старший бит =>0010 0000 =>32;
32+1 = 33...
Хотя, если поразмышлять, то можно предположить, что автор ошибся в местоположении старшего бита.
т.е. все выглядит теперь так:
0x81 => 1000 0001 => не учитываем неправильный старший бит =>1000 0000 =>128;
0x20 => 0010 0000 => не учитываем неправильный старший бит =>0010 0000 =>32;
32+128 = 160...
Старший бит - крайний слева. Не так ли?
5. EuGen - 25 Декабря, 2009 - 13:19:37 - перейти к сообщению
Читайте внимательно.
0. 0x81 => 1000 0001. Отбрасываем старший бит: 000 0001
1. 0x20 => 0010 0000 . Отбрасываем старший бит: 010 0000
2. Склеиваем первое со вторым: 000000100100000 = 160
0. 0x81 => 1000 0001. Отбрасываем старший бит: 000 0001
1. 0x20 => 0010 0000 . Отбрасываем старший бит: 010 0000
2. Склеиваем первое со вторым: 000000100100000 = 160
6. movEAX - 25 Декабря, 2009 - 13:28:30 - перейти к сообщению
EuGen пишет:
Читайте внимательно.
0. 0x81 => 1000 0001. Отбрасываем старший бит: 000 0001
1. 0x20 => 0010 0000 . Отбрасываем старший бит: 010 0000
2. Склеиваем первое со вторым: 000000100100000 =
0. 0x81 => 1000 0001. Отбрасываем старший бит: 000 0001
1. 0x20 => 0010 0000 . Отбрасываем старший бит: 010 0000
2. Склеиваем первое со вторым: 000000100100000 =
Вот теперь дошло) Благодарю!
7. blinkov - 14 Апреля, 2012 - 01:23:59 - перейти к сообщению
Пишу серию статей на схожую тему, возможно пригодится: Интерактивные сайты