求助: 大文件单线程跨网传输解决方案。 最近做一个视频采集系统,CLIENT端需要把上G的资料往server端发(最大的20个G都有),CLIENT端网络环境复杂 VPN拨入比较常见,要求用单线程传输,实现断点续传。做出来 实际测了下,发现下的文件经常MD5值对不上。 导致文件打开出错急求这方面的朋友给个完美解决方案。 分不够再加。 直到解决为止。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试下传小文件在不断开的情况下看能出错不?排除socket常规错误如果仅在有断开情况下发生错误,看一下写入文件的模式,只在确保写入文件成功才保存状态写文件是有缓冲的,并不是执行了Write就真的写入文件了写入文件指定不用缓冲FILE_FLAG_NO_BUFFERING或者每次Flush, 或者定时保存,保护硬盘 一个实现FTP断点续传的类http://blog.csdn.net/caps77/archive/2004/12/02/201445.aspx使用CFtpconnection类实现文件的断点续传的问题http://blog.csdn.net/wh825554/archive/2006/09/05/1179335.aspx 1:推荐您看一下CTOrrent的源代码,学习一下里面的思想。2:也就是BT协议的Piece的概念把大文件划分为多个Piece,每个Piece有一个Hash值,最后服务前段验证这个Hash是否正确,否则丢弃要求重发,可以采用多个线程。开发体现的主要是设计,这种思想应该足以你的开发了。 原因很简单 2个第一 你的断点续传有问题如果你的代码可以保证的化 ,向下看。 不过如果你是局域网出现这个情况,请你检测你自己的代码第二 tcp/ip 本身的错误。tcp ip 不能保证数据可以正确的传送。 大家不要激动,我不是胡说,也不是耸人听闻。如果你把ip的校验方式好好的看一看你就知道了ip 的校验保护不是100% 保护数据不被篡改。 这点在tcp/ip 卷一是有说明的。解决方案类bt 方式; 将文件分片, 每一片做hash,然后生成一个种子 静候 im2web 的 第二 tcp/ip 本身的错误。 你可以看一下ip 头的校验算法,ip只是简单的做了奇偶校验,但是他没有对自己传送的数据流做mash , 所以 如果网络出了问题,但是奇偶校验是正确的,那么tcp 就会认为他的数据是正确的。举个例子a ==> b 一个字符串 'aaaa'a==> b 一个字符串 'bbbb'b 在预先不知道 a 会送什么数据的时候, 他如何校验bbbb 这个字符串是否正确? 没有办法。 所有bt 的分片从一定程度解决了这个问题。 最简单的例子 就是arp 挂马 和 中间人攻击。 这是最明显的tcp /ip 本身问题的例子。为什么你的服务器没被攻克,只要arp欺骗了,仍然可以注入你的http流 最后推荐一下偶的小站。 http://www.msn2web.com 一个web版的msn网址 正确,tcp传输一样会丢包、会误码,不要太相信tcp连接了,还是要相信自己每个数据包都封装一个校验标志,校验不通过,重新传该包 20G TCP顺序传难免出问题,还是广域网。考虑分片稳妥些,自己订一个简单的协议,先取得文件大小生成文件,再分块传输校验 现在我的传输方式是 client 端 循环发送定长的数据包 SERVER端接收。 如果做效验的话 一来一回肯定很影响传输速度。 大家都是怎么做的呢? 麻烦共享一下。 是udp传输吧, 可能出现丢包了 20G TCP顺序传难免出问题,还是广域网。 考虑分片稳妥些, 自己订一个简单的协议, 先取得文件大小生成文件, 再分块传输校验 ……………………学习中…………小问一下,CTOrrent是什么东西? 有关使用递归方法求非叶节点个数的问题 VC文盲求接收结构体的关键语句!tcp通信! 挺迷茫的,望大虾们指点一下! 定义时间坐标系 粒子群优化算法可以解决生物信息方面的哪些问题?? 进程没关闭? 基于Dialog的界面上有5个Button,一个TreeList,一个ListBox。需要实现点击一个按钮的时候,ListBox隐藏,同时5个按钮重新布局,能实现码 我想通过一个按钮来动态创建一个LISTBOX,下面程序不知行不行啊,反正我没有试出来 请进,为什嬷我的程序会死循环???? 很无聊 图片读入到缓冲区后如何从缓冲区读取再显示 resource language
或者定时保存,保护硬盘
http://blog.csdn.net/caps77/archive/2004/12/02/201445.aspx
使用CFtpconnection类实现文件的断点续传的问题
http://blog.csdn.net/wh825554/archive/2006/09/05/1179335.aspx
2:也就是BT协议的Piece的概念把大文件划分为多个Piece,每个Piece有一个Hash值,最后服务前段验证这个Hash是否正确,否则丢弃要求重发,可以采用多个线程。开发体现的主要是设计,这种思想应该足以你的开发了。
如果你的代码可以保证的化 ,向下看。 不过如果你是局域网出现这个情况,请你检测你自己的代码第二 tcp/ip 本身的错误。tcp ip 不能保证数据可以正确的传送。 大家不要激动,我不是胡说,也不是耸人听闻。如果你把ip的校验方式好好的看一看你就知道了ip 的校验保护不是100% 保护数据不被篡改。 这点在tcp/ip 卷一是有说明的。解决方案
类bt 方式; 将文件分片, 每一片做hash,然后生成一个种子
你可以看一下ip 头的校验算法,ip只是简单的做了奇偶校验,但是他没有对自己传送的数据流做mash , 所以 如果网络出了问题,但是奇偶校验是正确的,那么
tcp 就会认为他的数据是正确的。举个例子a ==> b 一个字符串 'aaaa'a==> b 一个字符串 'bbbb'b 在预先不知道 a 会送什么数据的时候, 他如何校验bbbb 这个字符串是否正确? 没有办法。 所有bt 的分片从一定程度解决了这个问题。
正确,tcp传输一样会丢包、会误码,不要太相信tcp连接了,还是要相信自己
每个数据包都封装一个校验标志,校验不通过,重新传该包
考虑分片稳妥些,
自己订一个简单的协议,
先取得文件大小生成文件,
再分块传输校验
考虑分片稳妥些,
自己订一个简单的协议,
先取得文件大小生成文件,
再分块传输校验
学习中…………
小问一下,CTOrrent是什么东西?