Как разобрать IP и порт из ответа http трекера - PullRequest
0 голосов
/ 30 апреля 2018

Я отправляю запрос трекеру и получаю ответ

d8: completei2e10: загруженный i1e10: незаконченный1e8: интервал1971e12: минимальный интервал

Как получить список пиров или IP-адрес и порт пира из этого ответа

1 Ответ

0 голосов
/ 30 апреля 2018

Ответ от трекера: в кодировке .
Добавление пробелов для ясности:

d
 8:complete
  i2e
 10:downloaded
  i1e
 10:incomplete
  i1e
 8:interval
  i1971e
 12:min interval
  i985e
 5:peers
  18:\235'\027\253\000\000\331e57\374-\033"\022,\270\302
e

Ключ : peers , который имеет 18-байтовую двоичную строку как значение , содержит одноранговые узлы в 'compact = 1' - форма, указанная в: [BEP23 - Tracker возвращает компактные одноранговые списки] , а также в [вики]

Каждый одноранговый узел представлен 6 байтами, 4 байтами IPv4 + 2 байта PORT в bigendian , поэтому строка из 18 байтов предназначена для 3-х узлов.

\235 ' \027 \253 \000 \000=>157 39 23 171 0 0(0*256+0=0)          =>157.39.23.171:0
\331 e 5    7    \374 -   =>227 101 53 55 252 45(252*256+45=64557)=>227.101.53.55:64557 
\033 " \022 ,    \270 \302=>27 34 18 44 184 192(184*256+192=47298)=>27.34.18.44:47298  

(\ 235 восьмеричное для 157, ' имеет значение ASCII 39 и т. Д.)

...