Bittorrent поддерживает состояния среди нескольких пиров - PullRequest
0 голосов
/ 10 апреля 2020

Я следую учебнику Кристен Уидман по написанию bittorrent-клиента, а также следую Wiki , однако у меня возникает путаница, что я не смог убираться из интернет-ресурсов.

До сих пор я был в состоянии отправить запрос трекера и получить список пиров, чьи IP-адреса и порты я сохранил следующим образом:

[{'IP': IPv4Address('76.126.244.88'), 'port': 6881}, ... ]

Кристен предлагает в своем уроке что я сначала пытаюсь подключиться к одному пиру. Я полагаю, что сначала я попытаюсь соединиться с первым узлом в списке, пока все хорошо.

Однако, что касается каждого пира, существуют определенные состояния, такие как «am_choking», «peer_choking», «am_interested», «peer_interested». Нужно ли отслеживать каждое из этих состояний в каждом списке в моем списке?

1 Ответ

1 голос
/ 12 апреля 2020

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

Это явно упоминается в официальной спецификации bittorrent :

Соединения содержат два бита состояния на обоих концах: засорены или нет, и заинтересованы или нет.

и в вики тоже:

Клиент должен поддерживать информацию о состоянии для каждого соединения с удаленным узлом:

...