设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 其他开发语言 >> 关于BT中的tracker
精品推荐
其他开发语言点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·Modem 常用AT指令集
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
·Thinking in C++ 简体中文第二版
·debug和release的区别
·error LNK2001: unresolved external symbol __ftol2 错误解决
·C库函数手册
·一个简单的C语言编译器
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

关于BT中的tracker

作者: 来源:网络文章 时间:2005-12-16 23:41:20

继续BT的研究-第二部份关于BT中的tracker

上次关于BT的研究主要是研究了BT文件的静态文件结构主是.torrent文件的结构,今天又看了libbt的代码并调试跟踪了btlist,这两天看了关于bt传输的文档,初步跟踪了bt的传输部份的代码这里做一个记录整理。

(一)关于BT的服务器

BT服务器主要有以下几个要素

(1)服务器上要运行一个tracker

(2)运行一个web server

(3)把.torrent的文件做好关联

(4)生成一个有效的种子文件

(5)把种子文件放到网页上

(二)关于BT中的tracker

这个就是BT之精华所在,是BT技术的灵魂,当建立连接的时候,tracker从所有下载者那里收集信息并帮助他们随机的配对,这个有点像P2P的打孔服务器,通过这个东东帮助下载者建立基于TCP的联接的通道,所有的过程是基于HTTP协议的。

所有的下载者通过周期性的与tracker联系报告他们的进度和信息,通过不同的连接上传和下载他们数据,连接是TCP连接,应用的是BitTorrentpeer协议

(三)关于BT代码的分析

这部份代码主要要看btget.c这个函数,因为这个函数库用了两个第三方的开源库,所以要想门儿清最好先了解一下libcurl和openssl两个工程。

ctx_register( ctx, dl);这一句代码是取tracker文件的

int ctx_register( strUCt btContext *ctx, unsigned download)
/*
* Contact the tracker and update it on our status. Also
* add any new peers that the tracker reports back to us.
*/
{
btDownload *dl=ctx->downloads[download];
btObject *resp;

assert(download<ctx->downloadcount);
/* contact tracker */
resp = btrequest(
dl->url, ctx->myid, ctx->mykey, dl->infohash, ctx->listenport,
dl->fileset.dl, dl->fileset.ul * ctx->ulfactor, dl->fileset.left,"started"
);

if(!resp)
return -EAGAIN;
#if 0
btObject_dump( 0, resp);
#endif
btresponse( ctx, download, resp);
btObject_destroy( resp);
return 0;
}
上面做出标记的部份就是去服务器取traker部份的代码,这个函数用到的就是libcurl库的功能函数

main函数有一段循环的代码应该就是收发数据的部份了,今天就记到这儿,明天再继续吧。

关于tracker文件格式做一个补充说明

例子:

* Tracker GET requests have the following keys urlencoded -
* req = {
* info_hash => 'hash'
* peer_id => 'random-20-character-name'
* ip => 'ip-address' -or- 'dns-name'
* port => '12345'
* uploaded => '12345'
* downloaded => '12345'
* left => '12345'
* event => 'started', 'completed' -or- 'stopped'
* }

* Tracker responses are bencoded dictionaries.
*
* resp = {
* failure reason => 'error text'
* - or -
* interval => 12345
* peers => {
* peer id => 'identifier'
* ip => 'ip-address' -or- 'hostname'
* port => 12345
* }
* }

具体代表的含义明天再继续了,老婆刚才又生气了,原因是我刚刚让她不要干扰我工作

 


关于BT中的tracker 相关文章:
关于BT中的tracker 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com