CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

关于实现BT的一个想法

楼主fengge8ylf(秀视工作室,承接P2P项目)2006-06-01 10:52:28 在 VC/MFC / 网络编程 提问

大家知道BT是使用TCP来进行文件传输的,这样做的目的是因为TCP是可靠传输协议,在实现时不用考虑丢包和乱序的问题,使编程变的简单.如果采用UDP的话,尽管UDP传输不可靠,但可以实现穿透防火墙以及内网和内网之间通讯的功能,这样供下载的"点"增多,如果UDP传输不可靠的问题解决的好的话,那传文件的速度肯定要比TCP快.  
  请大家评论一下我说的对不对,以及BT用UDP实现的可行性.   谢谢. 问题点数:100、回复次数:22Top

1 楼liushaoyi0704(【化外之民】)回复于 2006-06-01 11:00:00 得分 0

抢沙发Top

2 楼liushaoyi0704(【化外之民】)回复于 2006-06-01 11:02:29 得分 10

UDP实现的是无连接通讯,本来就是不可靠的,你还能怎么解决,能解决的话那就不叫UDP了.Top

3 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 11:10:50 得分 0

liushaoyi0704   当然可以解决了   其实对于物理层的传输比如网线根本不区分传输的是TCP还是UDP   也就是说不论是TCP还是UDP在物理层传输都会丢包和乱序的   只不过TCP在传输层(可能是这一层)时解决了丢包和乱序的问题Top

4 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 11:31:41 得分 0

CSDN人气越来越差了   发个帖子半天没人回答   高手都干吗去了Top

5 楼liushaoyi0704(【化外之民】)回复于 2006-06-01 11:42:58 得分 10

我认为你要费时间去解决的话必然要降低速度,也就失去了UDP的优越性,那就不叫UDP了,那还不如用TCP.Top

6 楼hlidea()回复于 2006-06-01 11:44:25 得分 10

Bitcomet早已经实现了UDP方式的连接了(估计很多客户端都实现了),没必要所有的peers全部用UDP连接,只需要内网用户之间用UDP方式就可以了,全部用UDP的话,还是得自己实现差错控制与流量控制,就我所知,现在还没有自己实现的可靠UDP超过了TCP的传输效率的...Top

7 楼pripor(心欲若止水,落花起涟漪)回复于 2006-06-01 12:35:19 得分 10

呵呵  
  要是人人都自己实现可靠UDP传输,那还设计TCP干吗  
  设计个内网UDP就行了  
  比特精灵就这么实现的Top

8 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 12:45:50 得分 0

我承认UDP的传输效率比不过TCP(因为不可能把UDP改造的象TCP那么强大)   但我是想利用UDP的两个优势   可以穿透防火墙以及内网之间的通讯   这两个问题目前TCP还是做不到的吧Top

9 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 12:47:13 得分 0

我使用UDP的目的不是因为UDP比TCP   快   而是为了穿透防火墙以及内网之间的通讯     这样一来可供下载的"点"就多了   速度自然就快了Top

10 楼hlidea()回复于 2006-06-01 12:56:13 得分 10

这些已经实现了...  
  肯定是可以的,我知道Bitcomet就可以,按pripor的说法,比特精灵也可以。。。不过你可以自己研究一下怎么实现Top

11 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 13:04:13 得分 0

好   谢谢各位了   我想采用混合模式   如果能直接连接的就用TCP   如果不能的就用UDP     不过发现对BT的好多细节了解的不够   如果大家谁熟悉BT可以联系我   或者提供有关BT的资料也可以   先谢谢了   谢谢了Top

12 楼hlidea()回复于 2006-06-01 13:11:04 得分 10

我觉得现在做BT,应该研究怎么把它这种算法应用到其他的方面(即不仅仅是文件传输,还可以用来做别的,至于具体做什么,就要靠大家的聪明才智了);另一个方向是DHT的算法改进,现在BT和emule一样用的是Kademlia,怎样能做的更好?这个也是值得考虑的。单纯的穿透防火墙以及内网之间的通讯已经比较成熟了(至少别人已经实现了)。Top

13 楼hlidea()回复于 2006-06-01 13:29:05 得分 10

BT的客户端我已经完成了大概二分之一了,不过最近快要实习了,就停了下来,好在现在实习单位已经签了,有一个月的时间可以供我挥霍,应该可以写个雏形出来,到时候再慢慢改。。。  
  BT的资料可以参考:  
  http://www.bittorrent.org/developer.html  
  http://wiki.theory.org/BitTorrentSpecification  
  http://www.newsmth.net/pc/index.php?id=wolfenstein  
  还可以找“Bittorrent性能卓越的原因”小马哥翻译的  
  有关KAD的论文Kademlia:   A   Peer-to-peer   Information   System   Based   on   the   XOR   Metric  
  以及P2P内网通讯的论文Peer-to-Peer   Communication   Across   Network   Address   Translators  
  用google一搜就能搜到  
  Top

14 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-06-01 13:40:55 得分 0

hlidea   多谢了   我现在做BT不是为了超越BT   呵呵   难度比较大   而是为了公司的需要   需要写一个类似BT的程序  
  可以和你交流一下吗   我的QQ:24582946Top

15 楼hlidea()回复于 2006-06-01 16:01:47 得分 10

你给我发邮件吧,我的邮箱是hlidea.gm@gmail.comTop

16 楼qiaodong()回复于 2006-06-05 12:23:58 得分 10

hlidea,你的BT是用的是第三方内核么~用的是哪个内核?Top

17 楼hlidea()回复于 2006-06-05 23:43:46 得分 10

我没用第三方库,自己从头写起,不过参考了BNBT的解bencode编码的部分,以及其中的SHA1算法,BNBT是一个bt的tracker服务器,你可以在google上面找到它的相关信息,至于BT库,可以参考这几个:  
  1.FTKernelAPI   http://www.hwysoft.com/chs/source.htm   国人写的,作者封装成dll了,不公开源代码,我是对BT的原理感兴趣,所以这个没多大用(商用要钱)  
  2.libtorrent   开源  
  3.libbt   开源  
  4.还有可以参考的c++代码有ctorrent,Shareaza,这两个都是成品,不是库,ctorrent的作者还是个中国人哦,这里还有一个人对其源码的分析http://www.starone.cn/blog/article.asp?id=11,至于Shareaza,在国外很火,但是其是个综合的下载器,支持很多P2P协议,我看过它的代码,太复杂了...  
  Top

18 楼qiaodong()回复于 2006-06-06 21:05:29 得分 0

我也写过一个,用的是第三方类,有时间交流一下  
  Top

19 楼CUG122032(烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫)回复于 2006-06-07 12:12:06 得分 0

你自己解决,能比人家解决的好?Top

20 楼eqxu(天使联盟)回复于 2006-06-07 12:52:30 得分 0

支持hlidea()   (   )   信誉:94Top

21 楼X_worm(蒙山大盗)回复于 2006-06-07 18:55:10 得分 0

先标记一下,回头再看Top

22 楼citywanderer2005(流浪狗)回复于 2006-11-16 13:11:09 得分 0

mark以下Top

相关问题

关键词

得分解答快速导航

  • 帖主:fengge8ylf
  • liushaoyi0704
  • liushaoyi0704
  • hlidea
  • pripor
  • hlidea
  • hlidea
  • hlidea
  • hlidea
  • qiaodong
  • hlidea

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo