用C语言开发一个BT下载软件 (三) ------ 系统结构设计

      整个系统各个模块功能如下图所示:


  1. 种子解析:负责解析种子文件,从中获取Tracker服务器的地址,待下载文件的文件名和长度,piece长度,各个piece的hash值。
  2. 连接Tracker:根据HTTP协议构造获取peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个peer的IP地址和端口号。
  3. 与peer交换数据:根据peer的IP地址和端口号连接peer,从peer出下载数据并将已下载的数据上传给peer。
  4. 出错处理:定义整个系统可能出现的错误类型,并进行处理。
  5. 运行日志:记录程序运行的日志,保存到文件中以备查看和分析。

      上述第3项“与peer交换数据”是本系统的核心和主要构成部分,它又可以划分成如下几个子模块:
      (1)peer管理:本模块为每个建立TCP连接的Peer构造一个peer结构体,并负责管理peer链表,添加和删除peer节点。
                  peer结构体的主要成员有:
  • peer的IP地址和端口号
  • 与该peer进行通信的套接字
  • 该peer的ID
  • 该peer当前所处状态
  • 发送缓冲区
  • 接收缓冲区
  • 数据请求队列
  • 数据被请求队列
  • <
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值