2014-11-25 2 views
0

Сообщение данных BEP9 (ut_metadata) имеет поле total_size, и у меня возникли проблемы с пониманием того, что это значит.синтаксический анализ сообщения данных BEP9 (ut_metadata)

сообщение в следующем формате:

<4-byte length prefix><20><1-byte extended msg id><bencode part><piece data> 

Я запутался о двух вещах:

  1. Включается ли длина префикса <piece data> часть?
  2. Что делает total_size Поле в bencode_part Укажите?

Мне кажется, что нам не нужен total_size, если я что-то не понимаю.

Вот в настоящее время, как я разборе его:

  • Длина префикса включает <piece data>, так что я знаю точно, насколько большой это сообщение. Я читаю много байтов.
  • После разбора <bencode_part>, я просто потребляю остаток байтов и рассматриваю это данные.

Может ли кто-нибудь помочь мне понять этот формат?

Спасибо.

+1

Я думаю, что в формате сообщения, который вы описываете, отсутствует заголовок расширения, вложенный в стандартный заголовок bittorrent. – the8472

+0

Вы правы, только что отредактировали сообщение. – sinan

ответ

1
  1. да
  2. общая длина информационной части файла .torrent. Метаданные могут передаваться в нескольких фрагментах, если они слишком велики для одного сообщения.
+0

Но разве длинные разделы информации уже отправлены в рукопожатие? Зачем отправлять его снова и снова в каждом сообщении данных? – sinan

+1

Потому что спецификация говорит так. «Этот ключ имеет ту же семантику, что и« metadata_size »в заголовке расширения» – the8472

Смежные вопросы