peers не отправляют обратно unchoke сообщение - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю bittorrent-клиент и пытаюсь сообщить одноранговым узлам, что мне нужно отключить, чтобы в конечном итоге получить куски.

Я отправляю одноранговые и заинтересованные сообщения одноранговым узлам, я ожидаю, что они отправятЯ получил ответное сообщение, но не смог его получить

Я в основном следую этой статье , в которой говорится, что вы должны отправить интересующее сообщение после создания рукопожатия (что я и сделалуспешно)

вот код, который я использую для создания заинтересованного сообщения

 12 def generateinterested():
 13   return struct.pack('>iB', 1, 2)

в качестве шестнадцатеричного дампа:

00000000: 00 00 00 01 02                                    .....

Отправка этого сообщения не получает ответа.Подобный вопрос говорит, что после рукопожатия (вместо заинтересованного) вы отправляете сообщение unchoke, которое противоречит исходной статье.

Я попытался сделать это, используя следующий код для создания сообщения unchoke

  9 def generateunchoke():
 10   return struct.pack('>iB', 1, 1)

в виде шестнадцатеричного дампа это:

00000000: 00 00 00 01 01                                    .....

Ни один из них не дал результата, что одноранговый сервер отправил обратно сообщение о снятии с очереди, как я ожидал.что я тут не так делаю?я должен отправить свое заинтересованное или отмененное сообщение после рукопожатия, чтобы получить полученное сообщение?

Я получаю противоречивые сообщения.2% времени, партнер отправит обратно unchoke.остальные 98% я жду более минуты и не получаю ответа.Почему это?

на тот случай, если вы не знакомы с сообщениями bittorrent здесь некоторая помощь

1 Ответ

0 голосов
/ 30 ноября 2018

Отправка заинтересованного сообщения не гарантирует, что вы получите сообщение отмены.Сигнальный интерес означает лишь то, что ваш коллега будет считать вас кандидатом без права голоса.Другими словами, вы должны ждать.Как долго зависит от принятия решений удаленными узлами.

Сигнализируемый интерес не является формой запроса, для которого есть ожидаемый ответ.Он просто объявляет ваше текущее состояние всем партнерам, к которым вы подключены.Некоторые из них могут отказаться от вас в какой-то момент в будущем, другие - нет, и со временем изменения будут отменены.Они с большей вероятностью откроют вас, когда вы загружаете в них данные.Информацию о том, как клиенты будут вести себя в совокупности, см. В документе bittorrent Economics .

Быстрое расширение обеспечивает более быстрое поведение при запуске.Пиры, как правило, следуют общему алгоритму для расчета набора частей, которые вам разрешено загружать, и затем сообщают вам, какой набор они рассчитали, после чего вы можете запросить эти части без открепления.

...