使用BitTorrent协议能否主动断开对等节点的文件传输连接?
调用choke/uninterested未断开BitTorrent传输的原因
核心原因
- 你调用的两个接口本身不具备断开连接的能力
wire.choke()和wire.uninterested()都属于BitTorrent协议的对等节点状态通知接口,仅用于传输协商,不会终止实际连接:wire.choke():仅代表本地节点A向节点B发送「拒绝响应B的下载请求」的通知,只会限制B从A拉取数据,完全不影响A从B拉取数据的链路,只要B没有choke A,数据仍然会从B传输到A。wire.uninterested():仅代表本地节点A向节点B发送「对B持有的文件分片无兴趣」的通知,属于协商类消息,B端可以选择忽略该通知,且已经进入传输队列的分片数据包仍然会发送完成,不会立刻中断传输。
- 未关闭底层传输连接
上述两个接口都是BitTorrent应用层的控制信令,不会关闭TCP/uTP层的传输连接,只要底层socket保持存活,双方有传输需求时就可以继续传输数据。
正确断开连接的方法
如果需要彻底终止和B节点的所有传输,直接调用wire.destroy()即可,该接口会直接关闭底层socket连接,彻底终止两端的所有数据交互。
内容的提问来源于stack exchange,提问作者DoitAllagain
相关产品推荐
相关产品推荐

