Project1

标题: 独立线程文件下载脚本 支持进度查询 [打印本页]

作者: SixRC    时间: 2017-10-17 23:43
标题: 独立线程文件下载脚本 支持进度查询
本帖最后由 SixRC 于 2017-10-21 01:44 编辑

正式版请参照五楼@hyrious 的完善版本
暂时我绝对写不出那么漂亮的代码啦

原正文:
额 先上代码好了 写了两天终于写满意了

code

很随便的测试代码:
测试代码


你可以同时下载多个文件 线程是独立的 对游戏没有影响 check过为true会关闭线程
可以随时查看进度 应该很方便了吧

关于作用 我想可以利用github等个人空间站固定一个txt的下载地址 里面保存一些可以下载的文件信息和地址
然后每天可以自动换标题画面啊
可以检查更新啊
只要文件不大于4G都可以下载 因为保存文件大小的那个内存量只有32位 (不过我也没试过)
暂时 这样吧 突然不知道该写点什么了

脚本的原理:
原理及写代码的经过






作者: hyperzlib    时间: 2017-10-18 09:00
建议不要全部读入内存,用分段写入,每下载1MB就写入文件
还有,建议加两个回调函数,一个是下载中不断被触发的下载进度回调,一个是下载完成或错误后的完成回调
作者: guoxiaomi    时间: 2017-10-18 09:48
本帖最后由 guoxiaomi 于 2017-10-18 09:52 编辑

我之前写了个get请求的:
http://rpg.blue/forum.php?mod=re ... &fromuid=210672
不过这个http访问是异步的,但写入应该不是异步的……因为我试过了在Thread里执行的代码会异常的缓慢,所以只是读取到了变量里,然后在主线程处理文件写入~
此外,还是很好奇怎么知道下载了多少内容~
作者: fux2    时间: 2017-10-20 10:14
这楼主怕是丧心病狂了,不过还是精品文章
作者: hyrious    时间: 2017-10-20 23:25
本帖最后由 hyrious 于 2017-11-1 22:50 编辑

触瞎
想学口算虚函数表(不

看代码的时候顺手封装了一个整齐点的(









作者: SixRC    时间: 2017-10-21 01:34
hyrious 发表于 2017-10-20 23:25
触瞎
想学口算虚函数表(不

谢谢!学到了很多
没学过C++ 虚函数表的继承排列方式都是边查边试的啦
假如稍微复杂点就没那么好运气了
倒是 想学手写机器码
第一次知道还能在模块里建类 还有其他许多写法思路
真的很棒耶

刚刚突然想到
在终止下载后需要多久真正停止返回 用update好还是sleep好
测试了一下 估计因为请求回应期的不同
耗时在0-50毫秒之间 大概sleep 0.001比较好吧 update固定25毫秒一刷新
期间想到两个问题
一是self.clear 假如下载任务很多
每个都需要等待结束会比较久
可以先统一call abort
虽然即使十个任务也顶多延迟0.5s...没差了啦
二是人为结束任务前需要检查一下是否完成下载了
否则就比较好玩了
-->下载完成
-->state置1
-->终止下载
-->state置结束符
-->ok?永远不成立
当然也是因为我懒没有多加一个变量..
hhh去改啦




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1