怎么实现基于UDP的P2P网络文件传输

haopairs 2013-12-06 10:27:57
已经实现的包穿透和聊天功能,现在需要再加一个功能。
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有几种思路,提供给你: 第一,用UDP实现可靠传输,对于不熟悉TCP和UDP原理的人来说难度不是一般的大。目前有实现好的库可用,比如udt udx vtcp等,不过我并没有找到很顺手的。 第二,针对udp传输文件做专门处理,其中我用过的一个思路如下: 1、发送方将文件大小和文件的一个id发给对方; 2、接收方根据文件大小和id索取文件内容; 3、分成小包按照文件偏移一个包一个包的索取,利用多个端口可以一次发n个请求; 4、超时时间内收不到文件内容的,重新索取; 5、每个包都有自校验机制; 6、整个文件索取到规定大小数据后,结束; 这个方案下功夫做好一点的话也可以达到不错的速率,至少比tcp要快。只是简简单单的实现一下(比如单包同步索取)的话就很难保证效率了,不过只要实现正确的话传输的正确性还是可以保证的。
wanglovec 2013-12-16
  • 打赏
  • 举报
回复
p2p应该是端到端传输, 如果你想一个文件分为N份 从N个人那里分别获取。 那么先先实现从一个人那里获取所要的,最后对文件进行HASH运算 进行校验 ,有错误了再次请求传输。 更多的可以看emule 源码
rsdtt 2013-12-13
  • 打赏
  • 举报
回复
就像2楼说的那样,再加上一个重发的机制
MoreWindows 2013-12-12
  • 打赏
  • 举报
回复
要实现一对一的传输不难。 先发送文件长度,然后分片读取文件,再一个一个发包(序号+文件内容)就可以。 ------------------------- MoreWindows 微软最有价值专家 迅雷大全核心研发人员 百度校园招聘笔试第二名 我的微博:http://weibo.com/MoreWindows 我的博客:http://blog.csdn.net/MoreWindows
思考一下 2013-12-12
  • 打赏
  • 举报
回复
推荐你看一下网络编程方面的书,多线程等! up

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧