BitWave的Host:

源码放在github上,采用NEW BSD LICENSE发布。地址:https://github.com/airtrack/bitwave

写BitWave起因

去年买新笔记本之前,老的笔记本装的是Windows 7的RC版本,而RC版本在去年3月就停止支持,每2个小时重启一次。因为打算买新笔记本,所以也就懒得装XP了。在买新笔记本之前的两周内就一直在用Linux,虽然以前经常折腾Linux,但是连续这么长时间用还是少,尤其是要在Linux下下载电影。不知道是人品问题还是啥的,我在Linux下面下载BT的速度重来没上过100KB/S(2M的带宽)。试过各种BT客户端,神马Transmission、Deluge和被誉为神器的Mldonkey,最悲剧的就是神器Mldonkey了,重来没超过20KB/S,悲剧的就直接不看电影了。忍了两周,买了新笔记本,重新回到迅雷的怀抱。后来想了想,为啥都是下载软件,咋差距那么大呢。为了找到原因,以身试法,看看为啥差距那么大,决定自己写个BT的客户端,于是就开始了漫长的开发了。

BitWave的这一年

从去年5月底开始写BitWave,看BT协议,写torrent文件解析,写网络库,写极简的http的协议(只有request和response的一部分),写各种各样的杂七杂八的东西,到最后把核心写完,用时一年,而且很大部分是今年写的。这一年间,各种加班,各种看书,各种看电影,各种上网,各种玩游戏,各种写其它程序,各种各种,总之没多少时间写。

BitWave目前状况

BitWave用C++做开发语言,使用Visual Studio 2010编译,目前只支持Windows。

BitWave包含一个异步网络库(IOCP实现)、一个简单的线程封装、一个极简极简的http协议解析、一个Buffer、一个简单的UnitTest(这个太简了,以后再加强)。BitWave需要VS2010编译,因为使用了shared_ptr和function+bind。目前的核心只实现了最基本的BT协议,扩展协议一个不支持,当然核心的东西还在不断改进中。BitWave目前是一个命令行的程序,命令行中也只支持一个任务,并且不允许选择下载哪些文件,也就是完全下载,当然这些功能在核心是都有的,能够支持多个任务和选择下载文件。在核心功能稍微完善了之后会考虑做个GUI(额,很久没写GUI程序了,都懒的做了)。

BitWave的未来计划

近期的计划:

1、当然是完善核心功能;

2、写一个log系统,这个太重要了,没有log,改进下载算法太难了,其他客户端的行为完全不可预料;

3、任务的保存与恢复。

中期和长期的计划:

1、移植Linux,写这个的起因就是Linux下的下载软件从来都是不给力,至少在我电脑上;

2、支持其他扩展的协议。

博客更新计划

接下来的一段时间,当然希望有时间(各种加班呐),把这一年写BitWave的一些值得记录的东西写下。可能包括以下东西:

1、网络库的开发记录;

2、核心的结构及P2P下载的一些东西理解吧;

3、没了,好像本来就没多少东西。

posted on 2011-05-29 17:39 airtrack 阅读(4277) 评论(8)  编辑 收藏 引用

bt解析 开源 java_开源一个BT客户端:BitWave相关推荐

  1. git 开源 java_开源中国GIT中Java分类下TOP10项目的活动情况分析

    TOP 10 ThinkGem / JeeSite  项目GIT情况统计 145546_JjhV_1245989.jpg (198.18 KB, 下载次数: 0) 2 分钟前 上传 从上面看到,总共参 ...

  2. 在线教育开源 java_开源项目SpringBoot在线教育平台

    作者:java1234_小锋 本项目核心技术采用SpringBoot+mybatis; 前端是layui: 开发工具idea: 数据库mysql5.7: 模版引擎采用的是thymeleaf: 安全框架 ...

  3. 网站统计 开源 java_开源 java CMS - FreeCMS2.8 统计分析

    统计分析 系统级统计分析,用于统计系统所有数据. 工作量统计 统计所有用户的工作量.从左侧管理菜单点击工作量统计进入. 您可以根据添加人,时间条件进行筛选.并可导出结果为excel文件. 站点信息统计 ...

  4. 【个人作品】推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功

    推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功 属于个人独创作品,欢迎使用测试,欢迎与作者联系,共同研究.如果大家喜欢将拿出源码. ...

  5. 几款开源的图形化Redis客户端管理软件推荐

    几款开源的图形化Redis客户端管理软件推荐 摘要: Redis是一个超精简的基于内存的键值对数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库.不过它公 ...

  6. 分析FLV文件分析和解析器的开源代码

    分析一下GitHub上一份FLV文件分析和解析器的开源代码 GitHub源码地址:功能强大的 FLV 文件分析和解析器 :可以将flv文件的视频tag中的h264类型数据和音频tag中的aac类型数据 ...

  7. BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)

    BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略) 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(十五):客户端源代 ...

  8. 运用BT在centos下搭建一个博客论坛

    在日常的工作和学习中,我们都很希望有自己的工作站,就是自己的服务器,自己给自己搭建一个博客或者是论坛,用于自己来写博客和搭建网站论坛.现在我们就用一个简单的方法来教大家如何30分钟内部署一个博客网站. ...

  9. 【专题】多角度深入解析开放原子开源基金会

    喜欢就关注我们吧! 2020 年 9 月 9 日,开放原子开源基金会正式对外发声,同天,宣布百度超级链正式成为基金会首个捐赠项目. 9 月 10 日,华为 OpenHarmony 操作系统开源,开放原 ...

最新文章

  1. AI战“疫”!人工智能在疫情中的重要作用
  2. mysql+join+分库分表_MySQL分库分表篇
  3. “别人家的小孩”是如何用一行代码手撕面试题的?
  4. MyEclipse 中文乱码
  5. oracle 初始化出错,OCCI编程时,初始化Date种出错
  6. Java:对double值进行四舍五入,保留两位小数的几种方法
  7. 自定义标签 —— 实现时间转换和输出功能
  8. Sharepoint学习笔记—Site Definition系列-- 1、创建Site Columns
  9. word删除所有的回车、空格
  10. n个结点,不同形态的二叉树(数目+生成)
  11. 学校计算机房 作文,第一次去机房作文
  12. 如何在源码包编译安装的 LEMP 环境下开启 OpenSSL 功能
  13. java导_java——导入功能
  14. 【Java基础-Java运算符】
  15. c盘python27文件夹可以删除嘛_c盘哪些目录可以删除
  16. 苹果激活锁功能降低iPhone盗窃案发案率
  17. 机器学习 | 泰坦尼克号数据集
  18. 基于FPGA的SD卡音乐播放器之SD卡篇
  19. 1946年谁提出存储程序通用计算机,存储程序原理是由谁于1946年提出的,它明确了计算机硬件组成的五大部分(B)...
  20. 物理机下安装 VMware ESXi 6.7

热门文章

  1. webapi 初识 net
  2. MVC神韵---你想在哪解脱!(七)
  3. 七种武器——.NET工程师求职面试必杀技(转)
  4. Download failed : Oracle JDK 7 is NOT installed,解决oracle jdk7的问题
  5. 引用opencv异常
  6. 通过路由器的IP映射来解决,两个不同IP地址的PC机之间的从LAN口到WAN口的单向通讯问题
  7. amd显卡更新最新驱动鼠标顿卡的解决方法
  8. (Object detection)目标检测从入门到精通——第四部分anchor box
  9. Python实战从入门到精通第八讲——字符串与文本2之合并拼接字符串
  10. NLP简报(Issue#7)