设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3514|回复: 13
打印 上一主题 下一主题

[原创发布] 独立线程文件下载脚本 支持进度查询

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2017-10-17 23:43:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 SixRC 于 2017-10-21 01:44 编辑

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

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

code

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


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

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

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





评分

参与人数 3星屑 +100 +3 收起 理由
hyrious + 1 塞糖
fux2 + 1 我很赞同
guoxiaomi + 100 + 1 精品文章

查看全部评分

Lv2.观梦者

梦石
0
星屑
785
在线时间
59 小时
注册时间
2017-9-30
帖子
127
2
发表于 2017-10-18 09:00:38 | 只看该作者
建议不要全部读入内存,用分段写入,每下载1MB就写入文件
还有,建议加两个回调函数,一个是下载中不断被触发的下载进度回调,一个是下载完成或错误后的完成回调

点评

经测试URLDownloadToFile只占用很少的内存  发表于 2017-10-18 11:21
关于第一点 URLDownloadToFile并不支持分段下载 第二点我已经写了  发表于 2017-10-18 09:21
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

3
发表于 2017-10-18 09:48:59 | 只看该作者
本帖最后由 guoxiaomi 于 2017-10-18 09:52 编辑

我之前写了个get请求的:
http://rpg.blue/forum.php?mod=re ... &fromuid=210672
不过这个http访问是异步的,但写入应该不是异步的……因为我试过了在Thread里执行的代码会异常的缓慢,所以只是读取到了变量里,然后在主线程处理文件写入~
此外,还是很好奇怎么知道下载了多少内容~

点评

学习了(๑•̀ㅂ•́)و✧  发表于 2017-10-18 15:16
已经更新了原理  发表于 2017-10-18 12:01
对了 对象的变量名是不需要的..开始是另一个方案 后来改掉了忘记把它也改掉了 ...晚上果然比较傻  发表于 2017-10-18 10:31
上完课就写原理给你 对于下载的具体过程我不太清楚 请求啊协议啊 只是用了urldownloadtofile  发表于 2017-10-18 10:15
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42426
在线时间
7603 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2017-10-20 10:14:46 | 只看该作者
这楼主怕是丧心病狂了,不过还是精品文章

点评

远不及你呀 : )  发表于 2017-10-20 11:02
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
5
发表于 2017-10-20 23:25:20 | 只看该作者
本帖最后由 hyrious 于 2017-11-1 22:50 编辑

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

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








评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 不懂漂亮的代码

查看全部评分

喵喵喵
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

6
 楼主| 发表于 2017-10-21 01:34:35 | 只看该作者
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去改啦

点评

你说的很有道理,我把 `stop!` 改了  发表于 2017-10-21 10:41

评分

参与人数 1星屑 +20 收起 理由
RyanBern + 20 赞认真的作者回复

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 23:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表