有好几台服务器,下载都从这几台服务器下
数据即时播放,我现在是分成很多小块给几个线程
并发下载,但是总会有前面的数据没到 后面的却下完了
的情况,不知道大家做下载工具时在有多个源的情况下
速度如何提上去的?
数据即时播放,我现在是分成很多小块给几个线程
并发下载,但是总会有前面的数据没到 后面的却下完了
的情况,不知道大家做下载工具时在有多个源的情况下
速度如何提上去的?
解决方案 »
- unresolved external symbol——链接错误!在线等,急!
- 有没有可以与winsock挂上的hook
- gethostbyname为什么会增加句柄
- 关于 sock=socket(AF_INET,SOCK_STREAM,0);的问题?
- 一个对象的m_hWnd是什么意思呢?
- sql server中如何在两个不同的数据表插入多条记录
- VC的Output(输出窗口)突然不能停靠,只能最大化和最小化,怎么还原到原始状态啊。。
- 关于 Win2000 在 Lan 中的问题
- 你们的大量数据怎么处理,自编格式,还是用数据库???
- 【提问】刚开始学win32编程,关于滚动条的有一段代码搞不懂
- TCHAR数据添加问题?
- 我自己定义了一个类作为自定义控件,怎样整合到MFC应用里面去
下完就放进去播放,但是有时会出现:第10块下完了,第0块还没下完的情况
我开始想用抢先式,比如某个线程下完一块,然后判断下载队列的某一块是否超时(我设定一个超时时间,比如2秒)
但是又想把超时的那一块已下了的部分数据拿回来继续接着下
但发现太难控制了,锁多又可能慢了,不知道sms88兄有什么好的建议?
像pplive、迅雷等p2p点播都是有视频缓冲的,先下载到一段视频数据后再开始播放。你可以把需缓冲的数据量设置大些,若只是缓冲50K的数据的话,我估计不到1秒就播放完了。这样就给某块数据因超时而未下载完转向从其它机器或者继续尝试下载留有时间,你也可以把那块未下载完的数据再分成几段去从多个服务器上下载。那些服务器的上传也可以更改代码么?要是可以的话,你可以这样考虑:
记录本地哪块数据有无的数据结构 ,称为 位图信息。
本机向所有服务器发送请求某块数据的命令,一有select的read触发后,接收完了就向所有服务器发送取消下载这块数据的命令,未开始发送这块数据的服务器就可以不发送了,也更新本地的位图信息,要是以后还是收到这块数据的话,就不用放入缓冲区了。
所有的socket都是使用的非阻塞式,本地接收到的任何数据包都可以放入一个buffer里,本地需要发送的数据包也都放入另外一个buffer里。轮循这两个buffer,比如接收到的那个buffer里合法的数据包就处理,并从buffer头移除
这个几个服务器性能动态的变化着
实际就是几个HTTP web服务器
我先前基本这么做了,我发现如果在
发现某一块超时后能被速度快的线程抢过去下,并且是
接着下效果更好一些
我试了N钟方法,都不满意
后来想起电驴里有一种对源节点存活速度之类的
动态更新算法
我动态的更新资源服务器速度信息,超时就拿速度较快的来
下载,效果好多了,就这么办着先,节点多,这些什么速度都不成问题了
稳定压倒一切