网站首页 > 易语言相关 > 网络相关源码 正文
多线程进度下载文件源码,鱼刺模块队列和信号量的运用
@闯荡
.版本 2 .支持库 spec .程序集 _下载 .程序集变量 fileHandle, 整数型 .程序集变量 fileSize, 长整数型 .程序集变量 unit, 长整数型 .程序集变量 queue, 鱼刺类_队列 .程序集变量 FileUrl, 文本型 .程序集变量 lic, 鱼刺类_临界许可 .程序集变量 ok, 长整数型 .程序集变量 callBack, 子程序指针 .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 unit = 512 × 1024 .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 .如果真 (fileHandle > 0) 关闭文件 (fileHandle) .如果真结束 .子程序 初始配置, 逻辑型, 公开 .参数 url, 文本型 .参数 filepath, 文本型 .参数 back, 子程序指针, 可空 .局部变量 http, WinHttp_中文版 .局部变量 resHeader, 文本型 .局部变量 bool, 逻辑型 http.打开 (“GET”, url, ) http.设置协议头 (“Range”, “bytes=0-1/”) http.发送 () resHeader = http.取所有协议头 () resHeader = 高级截取文本 (resHeader, “bytes 0-1/”, #换行符, , , , , ) fileSize = 到长整数 (resHeader) .如果真 (fileSize ≤ 0) 返回 (假) .如果真结束 bool = 写到文件 (filepath, 取空白字节集 (fileSize)) .如果真 (取反 (bool)) 返回 (假) .如果真结束 fileHandle = 打开文件 (filepath, , ) .如果真 (fileHandle = 0) 返回 (假) .如果真结束 分割 () FileUrl = url callBack = back 调试输出 (fileSize, unit, fileHandle) 返回 (真) .子程序 分割 .局部变量 i, 整数型 .局部变量 count, 整数型 queue.清空 () count = fileSize \ unit .计次循环首 (count, i) queue.压入文本 (到文本 ((i - 1) × unit) + “-” + 到文本 (i × unit - 1), ) .计次循环尾 () queue.压入文本 (到文本 ((i - 1) × unit) + “-” + 到文本 (fileSize), ) .子程序 下载, , 公开 .局部变量 temp, 文本型 .局部变量 start, 长整数型 .局部变量 end, 长整数型 .局部变量 bin, 字节集 .局部变量 http, WinHttp_中文版 .局部变量 bool, 逻辑型 .局部变量 size, 长整数型 .如果真 (queue.取队列长度 () = 0) 返回 () .如果真结束 queue.弹出文本 (temp) ' 0-499 start = 到长整数 (取左边文本 (temp, “-”)) end = 到长整数 (取右边文本 (temp, “-”)) http.打开 (“GET”, FileUrl, ) http.设置协议头 (“Range”, “bytes=” + temp) http.发送 () bin = http.取返回字节集 () size = 取字节集长度 (bin) .如果真 (size ≠ unit 且 size ≠ end - start) queue.压入文本 (temp, ) 返回 () .如果真结束 lic.进入 () bool = 移动读写位置 (fileHandle, #文件首, start) .如果真 (取反 (bool)) 调试输出 (“移动读写位置失败”) lic.退出 () 返回 () .如果真结束 bool = 写出字节集 (fileHandle, bin) .如果真 (取反 (bool)) 调试输出 (“写出字节集失败”) lic.退出 () 返回 () .如果真结束 lic.退出 () 原子_运算 (ok, size) .如果真 (到整数 (callBack) > 0) 调用子程序 (callBack, , , ok, fileSize) .如果真结束 ' 调试输出 (size, ok, fileSize) .如果真 (ok = fileSize) 关闭文件 (fileHandle) fileHandle = 0 .如果真结束 .子程序 取状态, 逻辑型, 公开 返回 (fileHandle = 0)
- 上一篇: 易语言远程获取TCP, UDP链接源码
- 下一篇: 数美js版本和易语言版本源码
猜你喜欢
- 2022-07-13 易语言多线程下载文件到内存源码
- 2019-08-20 易语言快速队列类
- 2017-11-16 信号量控制多线程例子
你 发表评论:
欢迎- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag
已有2位网友发表了看法:
易语言 评论于 [2020-05-28 17:24:40] 回复
队列鱼刺
编程学习平台 评论于 [2021-04-08 14:17:04] 回复
鱼刺类队列