链接BT的商榷-第二部份对于BT中的tracker91porn soul
前次对于BT的商榷主如果商榷了BT文献的静态文献结构主是.torrent文献的结构,今天又看了libbt的代码并调试追踪了btlist,这两天看了对于bt传输的文档,初步追踪了bt的传输部份的代码这里作念一个记载整理。
(一)对于BT的劳动器
BT劳动器主要有以下几个身分
(1)劳动器上要脱手一个tracker
(2)脱手一个web server
(3)把.torrent的文献作念好关联
(4)生成一个有用的种子文献
(5)把种子文献放到网页上91porn soul
(二)对于BT中的tracker
这个等于BT之精华地点,是BT技能的灵魂,当开采连合的期间,tracker从扫数下载者那儿网罗信息并匡助他们立时的配对,这个有点像P2P的打孔劳动器,通过这个东东匡助下载者开采基于TCP的聚首的通说念,扫数的流程是基于HTTP公约的。
扫数的下载者通过周期性的与tracker关系陈述他们的程度和信息,通过不同的连合上传和下载他们数据,连合是TCP连合,行使的是BitTorrent peer公约
(三)对于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 * } * }
具体代表的含义翌日再链接了,老婆刚才又不悦了,原因是我刚刚让她不要侵扰我职责
本文地址:91porn soul