展会动态

现在用着也没问题

日期:2020-08-12 02:48 作者:现金捕鱼

  授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

  授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

  java new String(a)创建了几个对象

  版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

  上一篇中,我们已经实现了对tracker的访问,从而获取到了peer对等体的ip地址以及端口号。我们这一篇要实现的是对等体之间的通讯。

  在bt种子下载中,对等体就是正在下载你需要文件的另一台主机或提供下载你需要文件的主机。每一个种子一开始都是有一个做种者做种,将种子,或磁力链发布到网上,提供给其他用户下载,上传的种子如果被其他人下载了。这时做种者即使退出,种子同样可以在网络上传播,因为已下载的用户又会自动充当种子的提供者,提供后来用户下载,就和种子一样,开花,结果,又产生新的种子。

  在bt协议中,每个用户,既是下载者又是种子的提供者。所以bt协议种资源不在一个网站上,而是在对等体中。我们只需要与对等体在bt协议下进行通讯,即可获得资源。

  2.判断前4个字节是否为0,为0表示心跳包(主要为了维持tcp连接,防止tcp连接因长时间为响应断开,可以选择不做处理,后面另外开一个线程专门处理心跳包),否则再读取一个字节

  3.通过这个字节判断包种类,1-9,default,对不通包设置不同的处理函数

  4.检查握手请求包,主要检查hash检验值(磁力链特征码)是否和你需要下载的文件一致

  9.等待对方的unchoke包。若收到unchoke包即可进行请求交互。

  11.如果request请求合法,对方将发送给你piece包,piece包中包含了资源片段。非法的话对方会choke你的。

  1.对方也会向你发送请求(每个用户既是下载者又是提供者),倒过来对方也会通过以上流程向你发送请求。

  2.一般而言bt下载是一对多的,这样下载快。不太可能只从一个用户获取资源。

  主程序开两种线程,检验下载是否完成的线程,socket连接线程,socket线程里包含三条线程,心跳包线程,发送信息线程,接收信息线程。

  由于只和一个peer进行交互,下了半天,才下了10片段。等全部下载完成后,将所有文件按照种子文件里各文件的排序,以及各文件长度,将资源切分合并成对应格式即可(比如原来种子中显示资源中有100字节的文本,200M的视频,我们自需要将piece文件对照切分,前100各字节打包成txt文本,后200M打包成视频文件)。

  1.tcp连接除非是对方主动shutdown,否则在stream中是不会读到结尾标识-1的,所以在tcp交互时,不要以-1作为一次读取的结尾标志。我一开始就以为每次发送数据都会有结尾标识符,然后一直read timeout。现在理解起来tcp交互的模型和管道通讯有点像。

  2.在第二篇我们通过tracker获取的ip地址,一般情况下80%以上的我们是访问不了的。为了快捷找到可用对等体进行测试,可以利用比特彗星(比特彗星下载后360会提示木马,我没理它,现在用着也没问题,大概没问题的吧2333)查看。

  3.根据实验发现,内网可访问的对等体数目比较少(不知道是网络原因还是需要tcp打洞?),我连接室内移动的wifi时一些无法访问的ip,在换成外部电信网就好多了。

  我总是接到粉丝发问:换了好多工具还是下不动啊!还有没有好用的下载器啊?你推荐的这些不行啊!垃圾,完全没用,还是下不了没用!换了几个下载器都下不动。因为老有人把下载不了的问题归咎于下载器上,我必须要站出来科普一下了。说到底,会提出以上问题,说到底是因为你没理解:下载一个磁

  python 编写,前端完整,前后端分离方案 方案一 本地服务器在家 外面不能连接家里网络的 因为 家里不需要开放某些端口,那么 本地服务器: 运行爬虫 + 本地网站 远程服务器: sphinx 索引

  播放软件直接播放 软件仅用于学习交流,不可用于违法活动,软件内并无任何涉及违法的数据及信息,全部数据来源均采集于互联网

现金捕鱼