欢迎来到皮皮网网首页

【45个java源码】【程序源码有啥区别】【鳄鱼大鳄php源码】btclient源码

来源:vis.js 源码 时间:2024-11-23 15:53:55

1.BT代表什么啊?

btclient源码

BT代表什么啊?

       BT:BT是一种共享软件(不是“变态”),全名叫"BitTorrent"。一般来讲,下载是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等。但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。但BT就不同,用BT下载反而是用户越多,下载越快,这是为什么呢?因为BT用的是一种传销的方式来达到共享的 BT首先在上传者端把一个文件分成了Z个部分,甲在服务器随机下载了第N各部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的N部分,这样就不但减轻了服务器端得负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去拿就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上拿那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。 ★开放防火墙BT端口一步一步学★ 仅为超级菜鸟服务: ICF是"Internet Connection Firewall"的简称,也就是因特网连接防火墙。ICF建立在你的电脑与因特网之间,它可以让你请求的数据通过、而阻碍你没有请求的数据包,是一个基于包的防火墙。在使用BT有时会因为ICF的阻拦,引起连接不到SEED或者数据包延滞降低下载速度。所以我们有必要在ICF中设置对BT使用的端口不进行阻拦。 1。在你的桌面上右键点击“网上邻居”,弹出的菜单中选择“属性”。 2。弹出“网络连接”窗口。在里面找到你上网用的连接,右键点击它,在弹出的菜单中选择“属性”。 3。弹出“本地连接属性”窗口。选择其中的“高级”选项卡。 4。看看鼠标所指的项目有没有选中(如果没有选就不用往下看了),选中了就点击窗口下方的“设置”按钮。 5。弹出“高级设置”窗口。图中被选中的是一些常见的网络服务,现在我们要添加新的BT服务,点击“添加”按钮。 6。弹出“服务设置”窗口。依次填写“服务描述”(随便你罗),“本机IP地址”(也可以写你的机器名),“端口号”(BT端口是~,每个BT线程占用一个端口,据说只能开9个),然后确定即可。(别忘了选中TCP协议) 7。这样“服务”栏中就增加了一个“BT1”服务,这个服务开放的是端口,同样你可以再新建开放~端口的服务,都搞定以后就点“确定”按钮。 8。现在我们的BT就可以在ICF中通行无阻了。 9。很多电脑中都没有开启ICF,但装有其他的专业防火墙。以最常用的天网防火墙个人版为例,同样可以设置开放BT端口,点击天网的“自定义IP规则”按钮。 。点击“增加规则”按钮。 。弹出“IP规则修改”窗口。如图依次填写“名称”(随便写),“数据包方向”选中“接收或发送”,对方IP地址选中“任何地址”,选中TPC协议,“本地端口”填“从到”,“TCP标志位”选中“SYN”项目,最后选择当满足上面条件时“通行”,其他的填不填无所谓,然后点确定。 。现在“自定义IP规则”栏中就增加了一个“BT”规则,打上前面的钩钩。 。点“保存”按钮,搞定收工。呼~ 使用BT过程中出现/错误后不必退出,这只是tracker服务器太忙,BT会自动重试(无论这种情况是出现在开始还是下载过程中) 另外注意错误的时间,如果距现在已经超过2分钟,恰恰说明现在是正常的。(BT不会自动清除过期的错误) BT Experimental的Advanced介绍 BitTorrent EXPERIMENTAL是BT的一个非官方版本,主要是添加了 限制上传速度、最大上传人数及其他一些功能,在最新版的BT Experimental v3.2.1b-2中,又添加了一个新的功能 [Advanced],通过这个功能,你能够察看:和你相联接的有哪些人,你和它们之间的数据传输速度怎么样(包括上传和下载)等等。 BT Experimental的界面与BT很像,使用方法也一模一样,只是多了一些设置: 左下角的 Settings for 预设的多种上网方式,选择与你的上网方式相同的选项,BT Experimental就会自动为你设置比较理想的 最大上传速度和人数,当然你也可以自己设置,不过记住:your download rate is 源码45个java源码proportional to your upload rate(你的下载速度与你的上传速度相关) 右下角的Upload rate和Max uploads就是你的 最大上传速度和人数。 接下来,就是主要介绍的Advanced功能了。在左下角的 Settings for 下面,有个蓝色的 Advanced 单词,点击它,就会弹出Advanced窗口,如下: 解释一下每列的意义: optimistic unchoke:意义不明 IP:对方的IP local/remote:也不太清楚 Up:当前你为对方上传数据的速度,也就是对方在你这里下载的当前速度。 Interested:你是否有对方需要的数据," * " 表示是。 Choking:对方是否暂时被你拒绝从你这里下载数据," * " 表示是。这个需要解释一下:在BT Experimental里,你是可以限制同时从你这里下载的人数的,比如你限制为6,但并不是说只能有6个人连到你这里,可能有几十个人连到你的电脑,这时,BT Experimental就会自动选择6个人,允许他们下载数据,其他的人就被暂时拒绝了,当过了一段时间后,BT Experimental又会自动选择另外的6个人,保证每个想从你这里下载的人都能够下载到数据。 Down:当前你从对方那里下载的速度。 Interesting:对方是否有你需要的数据," * " 表示是。 Choked:你是否暂时被对方拒绝从他那里下载数据," * " 表示是。 Snubbed:暂时意义不明。 Downloaded:你从对方那里下载的数据总量。 Completed:对方的文件数据的完整度。%的那些人就是SeeD。大家都来拜一拜呀~~~~~ Peer Download Speed:对方下载的总速度。嗯嗯,看到那些上百KB速度的人了吧,羡慕啊~~~~~ 好了,介绍完毕,这下大家都明白了吧?这个Advanced功能很不错吧,如果喜欢就去下载一个吧,和BT一样方便,但是功能更强,稳定性也很好。(广告!广告!)下载地址:http://ei.kefro.st/projects/btclient/ BT运行原理分析及内网提速方法 由于内网用户无法提供一个对外的端口,所以无法做服务器.但用BT的时候,发现它可以让内网用户做 Send,作为程序员就忍不住下载了它的源代码分析了一把(为了看它,还专门去写了一下Python:}) 比起其它的P2P软件,BT有个独特的地方,它存在一个中间的WEB服务器,就是我们在发布的时所填写的announce.该服务器提供了发布的统一管理,不像其它P2P软件那样到处去找哪些非常不稳定的个人服务器,相对起来让人安心的多. 该WEB服务器更大的作用是内网用户可以做 Send(下面会说明原理),这是其它软件无法做到的,但不好的地方是announce当机的时候就无法下载了,要知道P2P下载关键是要人气要高,announce停一下就搞到人气全没有了 .torrent 的作用 大家都知道我们要用BT下载 ,就要先下载一个.torrent文件,这个文件到底有甚么呢: 首先是 announce 纪录了发布服务器的位置,让BT知道是那个WEB服务器发布的 然后是一些文件信息,文件名,目录名,长度等等 最后是片段长度,和片段的 Sha1 校验码 (BT为了事现续传和文件校验,就把文件分成若干个片段) 大家可以用写字板打看torrent文件看看,就是知道个大概,后面的乱码是片段 Sha1 校验码 开始-续传的实现 sha校验 BT 打开一个 torrent文件后,先要你选择文件保存那里.然后判断文件不存在的话就建立新文件,存在的话就用 Sha1 校验码去校验文件---错误的就是还没下载的,这样就可以实现续传了,但位校验,想不慢都不行 得到 peer 现在知道要下载甚么了,到那里下载呢?这就要寻找有谁提供上传了,这里BT是通过WEB服务器来实现的,首先BT会通过分析 torrent 来得到一面一串网址 http://btfans..org:/announc...2&event=started http://btfans..org:/announce 是发布服务器的地址 info_hash 是torrent文件中的 info 部分的Sha校验码,WEB通过它在发布列表找到对应的纪录, peer_id 是自身的标识,它是个0和当前时间+全球的唯一标识码(GUID)的Sha校验的前八位,共位 port 你提供上传的 port IP 你的ip地址,没有的话服务器会自己找到 uploaded downloaded 你上传和下载了多少,服务器可以用它来做流量分析 left 你还要下载多少个字节 event 状态,告诉服务器你是准备开始下载,还是停止,还是下载完成了 以上这个操作默认 5 分钟做一次,或由服务器设定 服务器会做甚么 服务器中有个一个 track 程序来管理这些请求 得到这一串代码后就会用 info_hash 来查找列表,找到你就可以下载,找不到就对不起啦 接着它会反连(NatCheck)你的 IP 和 Port这样就可以知道你是内网用户还是共网用户(如果你是内网用户,它是连不通的,因为它会连到你的服务器上,你的服务器当然没有这个端口啦) 然后服务器返回现在正在下载这个文件的所有公网用户的IP和port,就像是这样 d8:intervalie5eersld2:ip:xxx.xxx.xx.xxx7eer id:b7e3abddortieeee interval 是告诉 BT 隔多少秒来查询一次这里是 分钟 (有点过分了) 最后如果你是公网用户它会把你提交的 IP 和 Port 放到info_hash 对应的列表中,这样其它人就可以找到你 下载 得到这些 peer IP后,BT就可以找到对应的IP下载了 Bt会到所有的peer去寻找自己要下载的东西,不是一定要到seed下载. Bt每找到一个peer就和建立一个Socket来下载,所以下载的人越多,速度就越快. 内网用户可以做Send的原理 上面说到服务器只会返回公网的ip的,那内网用户怎么可以做Send呢,这是因为BT是一个主动连接的软件(即使你已经下载完了,也不也会主动连接他人) 下面是一个仿真流程: 1 内网用户开始做 seed, 2 服务器收到请求,由于是第一个所以也没有peer返回 3 公网用户提交请求,由于seed是内网用户所以也没有peer返回,等待下载,但服务器会把它的IP放到列表中 4 内网经过 interval 时间间隔后,再向服务器放出请求,得到上面得公网IP 5 得到公网IP后,内网马上进行连接 6 公网用户建立连接,数据开始传输 (注意现在是公网用户做服务器,内网用户做客户端,是不是有点怪) 7 其它内网用户去上面公网用户下载数据 所以,内网用户做 seed 一定要有公网用户得参与,否则其它内网用户无法下载.如果全部是内网用户,那个所有连接都不会成立,当然这是比较极端的情况. 以上可见,内网用户不能和内网用户连接,其它用户无法从服务器查到你,所以无法主动连接你,你只能每隔分钟从服务器找到公网用户一个个进行连接. 由于中国很多用户的是内网用户(我从服务器上查回来的peer还没试过超过个的),所以内网用户用BT的确要比公网用户要慢很多.于是有了下面的 一直是0%:可能SEED是内网,连接不上。有时用PTC和shareaza无法下的东东,用BT就可以下。下不了的话具体原因跟具体情况有关,如你的网络是否局域网,你是否能访问到tracker,你使用的是那种客户端,你下载的具体是哪一个BT文件,你是从头开始下还是续传,续传的话之前是否死机过等这些都有关系。 BT下载慢的一些原因: 1、不是公网用户。内网用户不能提供主动连接,所以较慢 2、各个运营商网络接口速率不高 3、下载者上传速率不高。因为BT优先处理上传较快的人 4、发布时seed的多少,还与发布者的速率相关,还有下载的人数越多相应的下载速度就越快(这就是BT的最大优点) 5、用户的防火墙阻碍作用 关于BT错误信息的一些解释 最近发现有很多人问有关BT的出错信息,下面给出完整的解释: 事实上,当你看到这些错误提示时,其实并不要紧张,这是你所要做的便是----等待. 注意:使用BT过程中出现红字错误后不必退出,BT会自动重试(无论这种情况是出现在开始还是下载过程中)另外注意错误的时间,如果距现在已经超过5分钟,恰恰说明现在是正常的。(BT不会自动清除过期的错误) I. A piece failed hash chech, re-downloading it 这并不是什么坏消息,你不用理会它.意思是告诉你,你下载的文件有一部分是坏的,bt会自动帮你重新下载错误的部分.导致这个错误的大多数原因在于某些人错误的使用了"跳过hash检查"这个选项 II.bad data from tracker - 通常你不必理会它,通常是tracker服务器过载或者down了.也有可能是你的网掉线了(如部分长宽,访问任何网站会返回登陆界面,就是错误的data啦) III.Problem connecting to tracker - timeout exceeded Problem connecting to tracker - HTTP Error : Connect failed Problem connecting to tracker - [Errno socket error] (, "Connection refused") Problem connecting to tracker - (, ‘Connection refused‘) 说明在连接tracker服务器过程中出现错误,有可能trakker服务器过载或者down了,这时并不要心急,等待BT自动重试.如果很长时间都没有反映的话,你可以加上"--http_timeout "的参数来加大连接重试时间.具体做法另文说明. IV.Problem connecting to tracker - HTTP Error : Not Authorized 说明这个tracker服务器不允许你使用这个torrent文件(国内好像比较少见),有些tracker服务器只允许在他们自己网站上发布的torrent才允许下载.解决只有换一个torrent文件了,:P V.Problem connecting to tracker - HTTP Error : Not Found 很简单,torrent文件在tracker服务器上已经找不到了,找个新的吧. VI.Problem connecting to tracker - HTTP Error : Proxy Authentication Required 假如你用的是代理下载BT,说明这个代理需要验证,需要你输入用户名和密码. VII.Problem getting response info - [Errno 2] No such file or directory: "C:\\Documents and Sett..." 在某些情况下,IE有可能没把torrent文件存在临时文件夹内.解决方法是在torrent文件下载地址上按右键,然后另存到硬盘的某处(这可是个好习惯,以后你求种子或者reseed的时候特别有用,建议大家都这么干,利己利人),然后双击这个torrent文件开始下载.如果出现这个问题,建议清楚你的IE缓存,在文件中如果出现"["或者"]"也会出现这个问题.