Linux BT下载
文章平均质量分 79
cslqm
博客地址已转到 https://cslqm.github.io/
展开
-
Linux BT下载(11)-信号处理模块和Peer管理模块
本文介绍信号处理模块和Peer管理模块原创 2016-11-28 18:51:25 · 758 阅读 · 0 评论 -
Linux BT下载(10)-出错处理模块和运行日志模块设计
本文主要介绍Linux BT下载程序的错误处理模块和运行日志模块。原创 2016-11-28 11:53:08 · 635 阅读 · 0 评论 -
Linux BT下载(9)-位图管理模块的设计和实现
位图管理模块的设计和实现对位图的操作主要在bitfield.h和bitfield.c中,负责创建位图,设置和获取位图某一位的值,保存位图等操作。//bitfield.h#ifndef BITFIELD_H#define BITFIELD_Htypedef struct _Bitmap{ unsigned char *bitfield; //保存位图 int原创 2016-11-28 10:20:10 · 708 阅读 · 0 评论 -
Linux BT下载(8)-种子解析模块设计与实现2
种子解析模块设计与实现2原创 2016-11-27 14:01:29 · 1075 阅读 · 0 评论 -
Linux BT下载(7)-种子解析模块设计与实现1
种子解析模块设计与实现解析文件主要在parse_metafile.h和parse_metafile.c中实现。//parse_metafile.h 解析文件#ifndef PARSE_METAFILE#define PARSE_METAFILE//保存种子文件中获取的tracker的URLtypedef struct _Announce_list{ char announce原创 2016-11-26 13:42:19 · 1239 阅读 · 0 评论 -
Linux BT下载(6)-BT下载实现的关键算法和策略
BT下载实现的关键算法和策略流水线作业原创 2016-11-24 08:49:27 · 1705 阅读 · 0 评论 -
Linux BT下载(5)-系统结构设计
系统结构设计整个系统模块结构如图:整个系统的功能模块分布:(1)种子解析:负责解析种子文件,从中获取Tracker服务器的地址,待下载文件的文件名和长度,piece长度,各个piece的hash值。(2)连接Tracker:根据HTTP协议构造获取Peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个Peer的IP地址和端口原创 2016-11-24 09:37:09 · 1195 阅读 · 0 评论 -
Linux BT下载(4)-peer之间的通信协议
peer之间的通信协议什么是peer我们将某个客户端称为下载者,而将其他下载者称为peer。什么是peer之间的通信协议peer之间的通信协议又称为peer wire protocal,即peer连线协议,它是一个基于TCP协议的应用层协议。要维持那些状态变量当客户端与peer建立TCP连接后,客户端必须维持的几个状态变量是:am_cho原创 2016-11-23 21:24:00 · 2273 阅读 · 0 评论 -
Linux BT下载(3)-与Tracker交互
与Tracker交互目的与Tracker进行交互主要有两个目的:一是将自己的下载进程通知给Tracker以便Tracker进行一些相关的统计;二是获取当前下载同一个共享文件的peer的IP地址和端口号。协议BT客户端与tracker交互依靠的是HTTP/HTTPS协议。过程在BT客户端解析完torrent文件信息后,建立一个HttpURLConnection原创 2016-11-23 20:05:31 · 902 阅读 · 0 评论 -
Linux BT下载(2)-B编码和种子文件
B编码B编码是一种简洁的数据组织方式,支持4种数据类型:bytestring、integers、lists和dictionaries。integers、lists、和dictionaries类型分别以字母i、l、d作为首定界符。以字母e作为尾定界符。bytestrings类型不使用首/尾定界符,其格式为:,比如 4:spam 表示字符串“spam”。整型的编码格式为:ie,即B编码原创 2016-11-23 16:01:21 · 2314 阅读 · 1 评论 -
Linux BT下载(17)-主函数的设计和实现
主函数的设计和实现主函数main调用前面所提到的模块的函数,主要功能是对下载和上传。main.c#include #include #include #include #include #include "data.h"#include "tracker.h"#include "bitfield.h"#include "torrent.h"#include "pars原创 2016-12-02 21:47:05 · 807 阅读 · 2 评论 -
Linux BT下载(16)-与peer交换数据模块的设计和实现
与peer交换数据模块的设计和实现本模块由多个子模块构成,主要负责与已建立连接的peer交换数据。除此之外,还调用“连接Tracker”模块中定义的函数监视各个套接字,以及尝试与新的peer家里TCP连接。本模块主要由torrent.h和torrent.c组成。以下是torrent.h的代码://torrent.h#ifndef TORRENT_H#define TORRENT原创 2016-12-02 21:33:24 · 1039 阅读 · 0 评论 -
Linux BT下载(15)-连接Tracker模块的设计和实现
连接Tracker模块的设计和实现连接Tracker模块的主要功能是:构造HTTP请求,请求Tracker服务器发送peer的IP地址和端口号;与Tracker建立连接;解析从Tracker返回的数据。Tracker返回的数据是经过B编码的,解析Tracker的回应和解析种子文件是类似的。本模块由tracker.h和tracker.c构成。以下是tracker.h的代码:#ifnd原创 2016-12-02 17:27:09 · 1044 阅读 · 0 评论 -
Linux BT下载(14)-策略管理模块的设计和实现
策略管理模块的设计和实现策略管理模块由policy.c和policy.h组成,主要负责策略的实现,计算各个peer的下载速度,根据下载速度选择分阻塞的peer,采用随机算法选择优化非阻塞peer,以及实现片断选择策略。据说BT协议的设计者说计算从各个peer处下载的速度是一个棘手的问题。经过分析和对比,现在通用的计算下载速度的方法是每10秒计算一次速度,并将下载速度最快的4个peer解除阻原创 2016-12-01 15:25:53 · 1126 阅读 · 0 评论 -
Linux BT下载(13)-缓存管理模块设计与实现
本文主要是BT下载的缓存管理模块的程序设计及实现。原创 2016-11-30 16:58:53 · 769 阅读 · 0 评论 -
Linux BT下载(12)-消息处理模块
消息处理模块消息处理模块由message.h和message.c组成,负责根据当前的状态生成并发送消息,接收以及处理消息。#ifndef MESSAGE_H#define MESSAGE_H#include "peer.h"int int_to_char(int i, unsigned char c[4]); /原创 2016-11-30 15:11:01 · 696 阅读 · 0 评论 -
Linux BT下载(1)-基础入门
什么是BT软件很多人用过比特彗星、迅雷下载,PPLive等软件它们都采用了BT协议,故可以称为BT软件。什么是BT协议2003年,软件工程师Bram Cohen发明了BitTorrent协议,即BT协议。BT是一种互联网上新兴的P2P传输协议,全名叫"BitTorrent",中文全称:"比特流" 。BT下载通过一个P2P下载软件(点对点下载软件)来实现,克服了传统下载方式的局限原创 2016-11-22 21:05:37 · 2251 阅读 · 0 评论