用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -2

与Tracker交互

      完成解析种子文件并从中获取Tracker服务器的URL后,即可开始与Tracker进行交互。交互有2个目的:

  1. 将自己的下载进度告知给Tracker以便Tracker进行一些相关统计;
  2. 获取当前下载同一个共享文件的peer的IP地址和端口号。
      客户端使用HTTP协议与Tracker通信。通过HTTP GET方法从Tracker获取请求,请求的构成为Tracker的URL后面跟一个?以及参数和值对。如http://tk.greedland.net/announce?param1=value1&param2=value2。

      在客户端发往Tracker的GET请求中,包含以下参数:
GET请求的参数
参数 含义
info_hash 与种子文件中info关键字对应的hash值(通过Sha1算法计算),其固定长度为20字节
peer_id 客户端用于标识自己的标识符,随机方式生成的也是20字节hash值
port 监听端口号,用于接收其他peer的连接请求
uploaded 当前总的上传量(字节数)
downloaded 当前总的下载量(字节数)
left 还剩多少字节需要下载
compact 通知服务器以何种方式返回peer,为1时,每个peer占6个字节,前4个字节为peer的IP地址,后2个为端口号
event 取值为started、cmpleted、stopped之一。
       客户端第一次与Tracker通信时,该值为started;
       下载完成后,为completed;
       客户端即将关闭时,为stopped。

      Tracker服务器的返回信息是一个经过B编码的字典。包含如下关键字:

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值