未收到Bittorrent PIECE消息



基本上我得到像Choke, Unchoke, Have和Bitfield这样的消息,但我没有收到任何PIECE消息,为什么会这样?

我也看到了一些旧的未解问题,但它没有帮助。BitTorrent协议实现:不接收"piece";消息

这有几个原因。最有可能的是:

  • 对等体应该知道你的状态,所以确保你发送"感兴趣","不感兴趣","窒息","未窒息"消息。同样,您应该跟踪对等体状态。
  • 你对同伴或同伴掐死你或两者都不感兴趣。只有当你对同行感兴趣时,你才能要求一块,而且同行不会呛到你。否则peer应该忽略你的请求。
  • 对等端没有您请求的文件。在这种情况下,对等端也应该忽略请求。

这些都来自bittorrent规范。下面是日志的一部分,演示了获取第一部分所需的步骤:

Openning a new session between peers.
Connected to <peer addr>
Handshaked with BitTorrent protocol uTorrent version 2040
Received message: Bitfield 
Update 'peer have' bitfield.
Received message: Have 572
Mark piece 572 as available.
...
... here we receive many Have messages, I skip them
...
Sending message: Interested
Received message: Unchoke
Sending message: Request { piece index = 0, block offset = 0, block length = 16384 }
Received message: Piece { piece index = 0, block offset = 0, block length = 16384 }
...

你可以看到uTorrent回复了Piece消息。

然而,在这种情况下,我们很幸运:peer并不总是解除我们的阻塞,因为它有有限的所谓的"解除阻塞插槽"。所以这里有一个提示:使用小比例的蝗群。这应该使调试更容易,因为peer更有可能解开我们的阻塞。

相关内容

  • 没有找到相关文章

最新更新