BT下载软件(linux C编程实战)
xidianliusoftware
这个作者很懒,什么都没留下…
展开
-
Unix进程环境
1. 缓存 a. 全缓存 当填满标准I / O缓存后才进行实际I / O操作 b.行缓存 当在输入和输出中遇到新行符时,标准I / O库执行I / O操作2. printf返回值表示成功输入的字符个数,返回0表示没有输出任何字符。Unix进程环境1. int main(int a rg c, char * a rg v[ ] ) argc 是原创 2011-11-16 18:50:12 · 243 阅读 · 0 评论 -
3. 与Tracker交互及peer之间的通信
与Tracker交互主要有两个目的:一是将字节的下载进度告知给Tracker以便Tracker进行一些相关的统计;二是获取当前下载同一个共享文件的peer的IP地址和端口号。 客户端使用HTTP协议与Tracker进行通信。Tracker通过Http Get方法获取请求,如 htttp://myBT.net/announce ?param1=value1¶m2=原创 2011-10-29 17:07:19 · 1157 阅读 · 0 评论 -
2.种子文件结构
B编码种子文件和Tracker的返回信息都是经过B编码的。B编码有4种类型:字符串、整型、列表、字典。字符串格式::。如:字符串spam,经过B编码为4:spam整型的编码格式:ie,即以i开头,以e作为终结符。如整数3 表示为i3e。列表的编码格式:le,如l4:spam4:eggse表示两个字符串,一个是spam,另一个是eggs。字典的编码格式:de,其中关键字是一个经过原创 2011-10-29 14:43:46 · 2016 阅读 · 0 评论 -
1. BT协议
BitTorrent(简称BT) 是一个文件分发协议,每个下载者在下载的同时不断的向其他下载者上传已下载的数据。BT协议通过一定的策略保证上传的速度越快,下载的速度也越快。 BT协议的文件分发系统的构成: 一个Web服务器 一个种子文件 一个Tracker(跟踪)服务器 一个原始文件提供者原创 2011-10-29 12:29:37 · 1386 阅读 · 0 评论 -
4.关键算法及策略
1. 流水线作业: 当客户端向peer发送数据请求时(即发送request消息),一次请求多个slice(即一个数据包发送多个request消息请求多个slice)。假如客户端一次只发送一个slice请求,则peer给客户端发送完一个slice的数据后进入等待,等待客户端发送新的数据请求。如果一次发送多个slice请求,则peer发送完一个slice后接着发送下一个slice,原创 2011-10-31 14:08:58 · 592 阅读 · 0 评论 -
5.系统模块设计
1. 种子解析:负责解析种子文件,从中获取Tracker服务器的地址,待下载的文件名和长度,piece长度,各个piece的hash值。2. 连接Tracker:根据HTTP协议构造获取peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个peer的IP地址和端口号。3. 与peer交换数据:根据peer的IP地址和端口号连接peer,从peer处下载数据原创 2011-10-31 15:01:43 · 982 阅读 · 0 评论 -
Peer管理模块的设计和实现
系统为每个与之建立TCP连接的Peer构造一个Peer结构体。Peer管理模块负责管理由各个Peer结点构成的Peer链表,主要工作是创建结点,添加结点到Peer链表,从Peer链表删除结点等。 Peer结构体中定义了7种状态,分别是:1. Halfshaked(半握手状态):已经发送握手消息但未收到对方的握手消息,或已经接受到对方的握手消息,但已方未发送握手消息。原创 2011-11-04 17:05:06 · 479 阅读 · 0 评论 -
BT协议各种消息
1. 客户端与一个peer建立TCP连接后,首先向peer发送握手消息,peer收到握手消息后回应一个握手消息。l 握手消息是一个长度固定为68字节的消息。消息的格式如下:消息格式中一些参数的含义如表13-9所示。表13-9 握手消息原创 2011-11-05 15:35:32 · 1877 阅读 · 1 评论