BT客户端与tracker交互(2.1)

BT客户端与tracker交互依靠的是HTTP/HTTPS协议

BT客户端解析完torrent文件信息后,建立一个HttpURLConnection连接,而这个URL地址就是torrent文件里的announcetracker服务器地址。并且在这个URL地址后加上torrent文件信息,格式如下:


1.连接:在openConnection时,发送 GET 请求/announce地址,tracker服务器判断这个地址,合法response就从流中得到后面的参数信息


BT客户端与tracker交互(2.1)_第1张图片


2.查询:之后通过info_hash来查询当前服务器有没有记录此条torrent信息,如为空,则返回一个错误信息。反之,则随机返回一个peers列表,且是一个被编码过的字典。



3.响应:Tracker响应的是Bencoding编码的字典,里面就是一个peers列表。得到返回信息后,就断开了这个连接,方便其他peers与客户端对等连接;如果下载完某个模块后或定期查询时,则再次连接tracker服务器

BT客户端与tracker交互(2.1)_第2张图片

peers下载完后,发送一个event=completed的请求,没有退出客户端,则他的身份有peer变成了seeder,把自己下载完的资源提供给其他peers服务。


注:当然,在此有个特别注意的地方,当制作这个torrent文件的人正在做种时,即在查询这个info_hash记录时,添加到tracker服务器中。

http://blog.chinaunix.net/uid-26548237-id-3056731.html







你可能感兴趣的:(android,BT,tracker,bt客户端与tracker交互)