用的是多线程+队列,还算稳定(鱼刺的队列不是太好用我打算自己写个)
.判断循环首 (启动大文件传输 且 处理数据)
.判断循环首 (真)
.如果真 (大文件传输队列.取队列长度 () = 0)
空闲处理记数 = 空闲处理记数 + 1
跳出循环 ()
.如果真结束
空闲处理记数 = 0
_进入许可区 (大文件传输线程许可证)
.如果真 (大文件传输队列.弹出字节集 (Char_) = 假)
到循环尾 ()
.如果真结束
_退出许可区 (大文件传输线程许可证)
Char_To_Array (Char_, Char_数组)
.如果真 (取数组成员数 (Char_数组) < 2)
到循环尾 ()
.如果真结束
WEB信息.置客户 (取字节集数据 (Char_数组 [2], 3, ))
.如果真 (启动大文件传输 = 假)
WEB信息.销毁句柄 ()
待传输大文件数 = 待传输大文件数 - 1
跳出循环 ()
.如果真结束
WEB信息.输出文件 (到文本 (Char_数组 [1]), 取字节集数据 (Char_数组 [3], 10, ), 假)
WEB信息.销毁句柄 ()
待传输大文件数 = 待传输大文件数 - 1
Sleep (1)
.判断循环尾 ()
.判断开始断 (空闲处理记数 > 50) ' 判断空闲 如果空闲50次以上进入低占用模式,再次请求时恢复
' 程序_延时 (1000) ' 低占用模式延时
.默认
' 程序_延时 (100) ' 中速模式延时
.判断结束
Sleep (1)
.判断循环尾 ()
_启动窗口.日志.加入文本 (“[” + 到文本 (取现行时间 ()) + “][大文件传输线程退出]” + #换行符)
.计次循环首 (取数组成员数 (插件列表), i)
处理目录_temp = 到小写 (插件列表 [i].处理目录)
尾符 = 取文本右边 (数据_请求路径_小写, 1)
.如果真 (尾符 = 到小写 (“/”) 或 尾符 = 到小写 (“\”))
数据_请求路径_小写 = 取文本左边 (数据_请求路径_小写, 取文本长度 (数据_请求路径_小写) - 1)
.如果真结束
.如果真 (处理目录_temp = 获取父路径 (数据_请求路径_小写))
.判断开始 (启动大文件传输 = 真)
日志 (客户句柄, “插件处理数据 ” + 插件列表 [i].模块名)
call (插件列表 [i].处理函数地址, 套接字, 客户句柄, 取指针地址_字节集型 (接收数据), 取字节集长度 (接收数据), 取指针地址_子程序指针 (&加入大文件传输队列))
.默认
日志 (客户句柄, “插件处理数据 ” + 插件列表 [i].模块名)
call (插件列表 [i].处理函数地址, 套接字, 客户句柄, 取指针地址_字节集型 (接收数据), 取字节集长度 (接收数据), 0)
.判断结束
返回 ()
.如果真结束
.计次循环尾 ()
上一篇 取鼠标当前所在目录
下一篇 易语言通讯录EDB版例程