成功地与多个节点建立握手后,BitTorrent消息链中的下一步是比特位图(bitfield)消息。
比特位图(bitfield)消息如下所示,其中顶部行说明协议段的字节大小:
<4-bytes><1-byte><x-bytes>
<nrOfBits><identifier><bits>
我遇到的问题是几乎所有的对等方发送的位图消息都与上述表示不同!这些消息通常看起来像这样:
size: 332, [0, 0, 0, 112, 5, 127, -1, -1, -1, -1, -5, -1, -1, -1, -1, -1, -17...]
第一个问题是我收到的大部分信息都有长度字节:
[0, 0, 0, 112]
尽管在这种情况下接收到的消息总共包含332字节,而在其他情况下,消息可能只有80字节左右。
第二个问题是,位通常重复使用-1或某些奇怪的负值。
我认为这不能归因于我的低级编码问题,因为其他消息正常工作。