开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 162|回复: 4
收起左侧

[已解决] 求一个限速进度下载的源码例子

 关闭 [复制链接]
结帖率:98% (41/42)
发表于 昨天 21:45 | 显示全部楼层 |阅读模式   重庆市重庆市
123精币
在下面看了吗,试了试都不行

https://bbs.125.la/search.php?mo ... F%E4%B8%8B%E8%BD%BD

不知道大家有没有源码例子

能实现进度下载和限速下载就可以




补充内容 (2024-9-23 21:46):
也看了调用迅雷的例子,但是那个太大了,我就一个小工具那个太高端繁琐了

最佳答案


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 24 天

发表于 昨天 21:45 | 显示全部楼层   广东省广州市
1.jpg
动态调用代码.zip (281 Bytes, 下载次数: 1)
回复

使用道具 举报

签到天数: 23 天

发表于 昨天 21:46 | 显示全部楼层   四川省宜宾市
https://bbs.125.la/forum.php?mod ... 6%E4%B8%8B%E8%BD%BD

自己改成断断续续的延时下载就行了
回复

使用道具 举报

签到天数: 24 天

发表于 昨天 22:01 | 显示全部楼层   广东省广州市
自己用的网络下载,自己改下缓冲区的大小,达到限速的目地!至于缓冲区大小达到多少对应的限速是多少,我也不知道,具体的也没有对比过

  
窗口程序集名保 留  保 留备 注
网络下载   
子程序名返回值类型公开备 注
网页_下载文件2逻辑型 边下载边保存,不需要cookies的,
参数名类 型参考可空数组备 注
网址文本型完整的网页地址,必须包含http://或者https://
局_保存路径文本型完整的本地保存路径
下载回调函数子程序指针回调子程序 4个参数 都为整数型 参数1 当前已下载 参数2 下载进度 参数3 总大小 参数4 任务id
任务ID整数型
访问方式整数型0=GET 1=POST 2=HEAD 3=PUT 4=DELETE 5=OPTIONS 6=TRACE 7=CONNECT
提交信息文本型POST专用
提交Cookies文本型本参数传递变量时会自动回传返回的Cookie
返回Cookies文本型返回的Cookie
附加协议头文本型一行一个请用换行符隔开,建议填写常量值或文本值,防止因传参引发错误
返回协议头文本型Location
禁止重定向逻辑型默认不禁止网页重定向
字节集提交字节集提交字节集数据
代理地址文本型代理地址,格式为 8.8.8.8:88
缓冲区大小整数型更改缓冲区大小,可以达到限速的目的
变量名类 型静态数组备 注
局_Internet句柄整数型 
局_Internet连接句柄整数型 
局_HTTP请求句柄整数型 
局_计次整数型 
局_字节集字节集 
局_访问方式文本型 
局_User_Agent文本型 
局_返回协议头文本型0
局_页面内容字节集 
局_请求标记整数型 
局_重定向地址文本型 
局_HTTPS逻辑型 
z_页面内容字节集 
局部_总大小整数型 
局_当前大小整数型 
局_进度双精度小数型 
FileHandle整数型 
参数整数型4
文件号整数型 
局_当次内容字节集 
局_访问方式 = 选择 (访问方式 < 0 访问方式 > 3, “GET”, 多项选择 (访问方式 + 1, “GET”, “POST”, “HEAD”, “PUT”, “DELETE”, “OPTIONS”, “TRACE”, “CONNECT”))
如果真 (访问方式 < 0 访问方式 > 2)
访问方式 = 0
如果真 (到小写 (取文本左边 (网址, 8)) = “https://”)
局_HTTPS = 真
判断 (寻找文本 (附加协议头, “User-Agent:”, , ) ≠ -1)
局_User_Agent = 删首尾空 (文本_取出中间文本 (附加协议头 + #换行符, “User-Agent:”, #换行符 ))
如果真 (局_User_Agent = “”)
局_User_Agent = 内部_协议头取值 (附加协议头)

局_User_Agent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36”
判断 (代理地址 = “”)
局_Internet句柄 = InternetOpenA (局_User_Agent, 1, 字符 (0), 字符 (0), 0)
判断 (局_HTTPS)  ' 用于解决win7下https协议代理无效问题
局_Internet句柄 = InternetOpenA (局_User_Agent, 3, 代理地址, “”, 0)
局_Internet句柄 = InternetOpenA (局_User_Agent, 3, “http=” + 代理地址, “”, 0)

如果真 (局_Internet句柄 = 0)
InternetCloseHandle (局_Internet句柄)
返回 ()
局_Internet连接句柄 = InternetConnectA (局_Internet句柄, 网页_取域名2 (网址), 网页_取端口2 (网址), 字符 (0), 字符 (0), 3, 0, 0)
如果真 (局_Internet连接句柄 = 0)
InternetCloseHandle (局_Internet连接句柄)
InternetCloseHandle (局_Internet句柄)
返回 ()
局_请求标记 = 位或 ( #INTERNET_FLAG_RELOAD, #INTERNET_COOKIE_THIRD_PARTY )
如果真 (取反 (是否为空 (提交Cookies)))
局_请求标记 = 位或 (局_请求标记, #INTERNET_FLAG_NO_COOKIES )
如果真 (禁止重定向)
局_请求标记 = 位或 (局_请求标记, #INTERNET_FLAG_NO_AUTO_REDIRECT )
判断 (局_HTTPS)
局_请求标记 = 位或 (局_请求标记, #INTERNET_FLAG_SECURE )
局_请求标记 = 位或 (局_请求标记, #INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS )
局_HTTP请求句柄 = HttpOpenRequestA (局_Internet连接句柄, 局_访问方式, 网页_取页面地址 (网址), “HTTP/1.1”, 字符 (0), 字符 (0), 局_请求标记, 0)
如果真 (局_HTTP请求句柄 = 0)
InternetCloseHandle (局_HTTP请求句柄)
InternetCloseHandle (局_Internet连接句柄)
InternetCloseHandle (局_Internet句柄)
返回 ()
判断 (附加协议头 = “”)
附加协议头 = “Accept: */*”
如果真 (寻找文本 (附加协议头, “Accept:”, , ) = -1)
附加协议头 = 附加协议头 + #换行符“Accept: */*”


如果真 (寻找文本 (附加协议头, “Referer:”, , ) = -1)
附加协议头 = 附加协议头 + #换行符“Referer: ” + 网址
如果真 (寻找文本 (附加协议头, “Accept-Language:”, , ) = -1)
附加协议头 = 附加协议头 + #换行符“Accept-Language: zh-cn”
如果真 (寻找文本 (附加协议头, “Content-Type:”, , ) = -1)
附加协议头 = 附加协议头 + #换行符“Content-Type: application/x-www-form-urlencoded”
如果真 (提交Cookies ≠ “”)
判断 (寻找文本 (提交Cookies, “Cookie:”, , ) = -1)
附加协议头 = 附加协议头 + #换行符“Cookie: ” + 提交Cookies
附加协议头 = 附加协议头 + #换行符 + 提交Cookies


判断 (访问方式 = 0)
HttpSendRequestA (局_HTTP请求句柄, 附加协议头, 取文本长度 (附加协议头), “”, 0)
如果真 (字节集提交 = {  })
字节集提交 = 到字节集 (提交信息)
HttpSendRequestA_字节集 (局_HTTP请求句柄, 附加协议头, 取文本长度 (附加协议头), 字节集提交, 取字节集长度 (字节集提交))
如果真 (是否为空 (缓冲区大小))
缓冲区大小 = 10240
局_计次 = 0
局_字节集 = 取空白字节集 (缓冲区大小)
如果真 (文件_是否存在 (局_保存路径))
文件_创建 (局_保存路径, 0)
文件号 = 打开文件 (局_保存路径, #重写, )
移到文件尾 (文件号)
局_当前大小 = 0
如果真 (局部_总大小 = 0)
局部_总大小 = 到整数 (网页_取网络文件尺寸 (网址))
循环判断首 ()
InternetReadFile (局_HTTP请求句柄, 局_字节集, 缓冲区大小, 局_计次)
如果真 (局_计次 = 0)
跳出循环 ()
局_当次内容 = 取字节集左边 (局_字节集, 局_计次)
局_页面内容 = 局_页面内容 + 局_当次内容
写出字节集 (文件号, 局_当次内容)
' 写到文件 (保存路径, 局_页面内容)
局_当前大小 = 局_当前大小 + 局_计次
局_进度 = 局_当前大小 ÷ 局部_总大小 × 100
如果真 (是否为空 (下载回调函数) 到整数 (下载回调函数) ≠ 0)
参数 [1] = 局_当前大小
参数 [2] = 局_进度
参数 [3] = 局部_总大小
参数 [4] = 任务ID
CallWindowProcA_Asm ( #动态调用代码, 到整数 (下载回调函数), 参数, 4, )

循环判断尾 (局_计次 ≠ 0)
返回协议头 = 取空白文本 (5000)
HttpQueryInfoA (局_HTTP请求句柄, 22, 返回协议头, 5000, 0)
返回协议头 = 子文本替换 (返回协议头, “Set-Cookie”, “Set-Cookie”, , , )
InternetCloseHandle (局_HTTP请求句柄)
InternetCloseHandle (局_Internet连接句柄)
InternetCloseHandle (局_Internet句柄)
关闭文件 (文件号)
局_返回协议头 = 分割文本 (返回协议头, #换行符, )
返回Cookies = “”
计次循环首 (取数组成员数 (局_返回协议头), 局_计次)
如果真 (文本_取左边 (局_返回协议头 [局_计次], “: ”)“Set-Cookie”)
判断 (寻找文本 (局_返回协议头 [局_计次], “;”, , ) ≠ -1)
返回Cookies = 返回Cookies + 删首尾空 (文本_取出中间文本 (局_返回协议头 [局_计次], “Set-Cookie:”, “;”)) + “; ”
返回Cookies = 返回Cookies + 删首尾空 (子文本替换 (局_返回协议头 [局_计次], “Set-Cookie:”, , , , )) + “; ”


计次循环尾 ()
返回Cookies = 取文本左边 (返回Cookies, 取文本长度 (返回Cookies) - 2)
如果真 (取反 (是否为空 (提交Cookies)))
返回Cookies = 网页_Cookie合并更新 (提交Cookies, 返回Cookies)

' 如果真 (寻找文本 (返回协议头, “Content-Encoding: gzip”, , ) ≠ -1 寻找文本 (附加协议头, “Accept-Encoding: gzip, deflate”, , ) ≠ -1)
' z_页面内容 = Zlib.unzGzip (局_页面内容)
' 如果真 (寻找文本 (返回协议头, “Content-Encoding: deflate”, , ) ≠ -1)
' z_页面内容 = Zlib.unzDeflate (局_页面内容)
如果 (z_页面内容 = {  })
写到文件 (局_保存路径, 局_页面内容)

写到文件 (局_保存路径, z_页面内容)
返回 ()
子程序名返回值类型公开备 注
内部_协议头取值文本型 
参数名类 型参考可空数组备 注
协议头文本型
变量名类 型静态数组备 注
位置整数型 
结果文本型 
位置 = 寻找文本 (协议头, “:”, , )
如果真 (位置 ≠ -1)
结果 = 取文本右边 (协议头, 取文本长度 (协议头) - 位置)
返回 (删首尾空 (结果))
子程序名返回值类型公开备 注
网页_取域名2文本型 通过“/”或者“.”来获取网址中的域名,默认使用“/”方式
参数名类 型参考可空数组备 注
网址文本型
去除二级域名逻辑型
不过滤端口逻辑型
后缀点数量整数型不留空表示通过“.”的方式取域名 。如:.com后缀点数量为1 ,.com.cn后缀点数量为2
变量名类 型静态数组备 注
域名文本型 
位置整数型 
二级文本型0
域名长度整数型 
前点开始整数型www.bbs.125.la   www后面.的位置
前点结束整数型www.bbs.125.la   bbs后面.的位置
后点开始整数型www.bbs.125.la   125后面.的位置
域名 = 到小写 (网址)
判断 (是否为空 (后缀点数量))  ' 使用“/”方式获取域名,网页_访问() 内部 必须使用这个
如果真 (取文本右边 (域名, 1)“/”)
域名 = 域名 + “/”

判断 (取文本左边 (域名, 8)“https://”)
域名 = 文本_取出中间文本2 (域名, “https://”, “/”)
如果真 (寻找文本 (域名, “http://”, , ) = -1)
域名 = “http://” + 域名
域名 = 文本_取出中间文本2 (域名, “http://”, “/”)

如果真 (去除二级域名)
二级 = 分割文本 (域名, “.”, )
位置 = 取数组成员数 (二级)
如果真 (位置 > 1)
域名 = 二级

回复

使用道具 举报

签到天数: 24 天

发表于 昨天 22:04 | 显示全部楼层   广东省广州市
继上

  
子程序名返回值类型公开备 注
内部_协议头取值文本型 
参数名类 型参考可空数组备 注
协议头文本型
变量名类 型静态数组备 注
位置整数型 
结果文本型 
位置 = 寻找文本 (协议头, “:”, , )
如果真 (位置 ≠ -1)
结果 = 取文本右边 (协议头, 取文本长度 (协议头) - 位置)
返回 (删首尾空 (结果))
子程序名返回值类型公开备 注
网页_取域名2文本型 通过“/”或者“.”来获取网址中的域名,默认使用“/”方式
参数名类 型参考可空数组备 注
网址文本型
去除二级域名逻辑型
不过滤端口逻辑型
后缀点数量整数型不留空表示通过“.”的方式取域名 。如:.com后缀点数量为1 ,.com.cn后缀点数量为2
变量名类 型静态数组备 注
域名文本型 
位置整数型 
二级文本型0
域名长度整数型 
前点开始整数型www.bbs.125.la   www后面.的位置
前点结束整数型www.bbs.125.la   bbs后面.的位置
后点开始整数型www.bbs.125.la   125后面.的位置
域名 = 到小写 (网址)
判断 (是否为空 (后缀点数量))  ' 使用“/”方式获取域名,网页_访问() 内部 必须使用这个
如果真 (取文本右边 (域名, 1)“/”)
域名 = 域名 + “/”

判断 (取文本左边 (域名, 8)“https://”)
域名 = 文本_取出中间文本2 (域名, “https://”, “/”)
如果真 (寻找文本 (域名, “http://”, , ) = -1)
域名 = “http://” + 域名
域名 = 文本_取出中间文本2 (域名, “http://”, “/”)

如果真 (去除二级域名)
二级 = 分割文本 (域名, “.”, )
位置 = 取数组成员数 (二级)
如果真 (位置 > 1)
域名 = 二级 [位置 - 1]“.” + 二级 [位置]


' 通过“.”的方式取域名,支持任何后缀域名
域名 = 子文本替换 (域名, “http://”, “”, , , )
域名 = 子文本替换 (域名, “https://”, “”, , , )
位置 = 寻找文本 (域名, “/”, , )  ' 一撇位置
如果真 (位置 ≠ -1)
域名 = 取文本左边 (域名, 位置 - 1)
连续赋值 (取文本长度 (域名), 域名长度, 后点开始)
计次循环首 (后缀点数量, )
后点开始 = 倒找文本 (域名, “.”, 后点开始, )
计次循环尾 ()
前点结束 = 倒找文本 (域名, “.”, 后点开始, )
判断 (去除二级域名)
域名 = 取文本右边 (域名, 域名长度 - 前点结束)
' 保留二级域名---------------------------------------
如果真 (前点结束 ≠ -1)  ' 至少是二级域名
前点开始 = 倒找文本 (域名, “.”, 前点结束, )
如果真 (前点开始 ≠ -1)  ' 至少是三级域名
域名 = 取文本右边 (域名, 域名长度 - 前点开始)



' 端口过滤处理--------------------------------------------------------
判断 (不过滤端口)
返回 (域名)
位置 = 寻找文本 (域名, “:”, , )  ' 冒号位置
判断 (位置 ≠ -1)
返回 (取文本左边 (域名, 位置 - 1))
返回 (域名)


子程序名返回值类型公开备 注
网页_取端口2整数型 取出网站服务器的默认端口
参数名类 型参考可空数组备 注
网址文本型
变量名类 型静态数组备 注
端口文本型 
位置整数型 
端口 = 网页_取域名2 (网址, , )
位置 = 倒找文本 (端口, “:”, , )
判断 (位置 ≠ -1)
返回 (到整数 (取文本右边 (端口, 取文本长度 (端口) - 位置)))
判断 (取文本左边 (到小写 (网址), 5)“https”)
返回 (443)
返回 (80)

子程序名返回值类型公开备 注
文本_取出中间文本2文本型 比如:欲取全文本为“12345”,现在要取出“3”,<3>的前面为“2”,<3>的后面为“4”,
参数名类 型参考可空数组备 注
欲取全文本文本型比如:欲取全文本为 12345
前面文本文本型3的前面为“2”,引号直接用 #引号,如:"[color=#引号red#引号]"
后面文本文本型3的后面为“4”,引号直接用 #引号,如:"[color=#引号red#引号]"
起始搜寻位置整数型可空,这里是指搜寻 参数二 前面文本 的开始位置
是否不区分大小写逻辑型为真不区分大小写,为假区分。
变量名类 型静态数组备 注
局_前面文本位置整数型 
局_后面文本位置整数型 
局_前面文本文本型 
局_后面文本文本型 
局_前面文本 = 子文本替换 (前面文本, “#引号”, #引号, , , )
局_后面文本 = 子文本替换 (后面文本, “#引号”, #引号, , , )
局_前面文本位置 = 寻找文本 (欲取全文本, 局_前面文本, 起始搜寻位置, 是否不区分大小写)
如果真 (局_前面文本位置 ≠ -1)
局_前面文本位置 = 局_前面文本位置 + 取文本长度 (局_前面文本)
局_后面文本位置 = 寻找文本 (欲取全文本, 局_后面文本, 局_前面文本位置, 是否不区分大小写)
如果真 (局_前面文本位置 = -1 局_后面文本位置 = -1)
返回 (“”)
返回 (取文本中间 (欲取全文本, 局_前面文本位置, 局_后面文本位置 - 局_前面文本位置))

回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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