易语言实现多线程验证代理是否有效的代码

载入程序

.版本 2
.程序集 启动
.子程序 _启动子程序, 整数型
载入 (_主窗口, , 假)
返回 (0)

多线程的方式验证ip的代码

此功能需要加载鱼刺类_线程操作模块和鱼刺类_HTTP模块

.版本 2
.支持库 iext
.程序集 主窗口程序集
.程序集变量 线程池, 鱼刺类_线程池Ex, , , 框架
.程序集变量 临界, 鱼刺类_临界许可
.程序集变量 线程, 鱼刺类_线程操作
.程序集变量 验证网址, 文本型, , , 配置
.程序集变量 验证字符串, 文本型
.程序集变量 是否UTF解码, 逻辑型
.程序集变量 连接超时, 整数型
.程序集变量 验证超时, 整数型
.程序集变量 已完成数量, 整数型, , , 记录
.程序集变量 有效数量, 整数型
.程序集变量 失效数量, 整数型
.程序集变量 保证显示索引, 整数型
.子程序 _按钮_测试_被单击
.局部变量 测试, 鱼刺类_线程操作, 静态
.局部变量 bool, 逻辑型
按钮_测试.禁止 = 真
验证网址 = 编辑框_验证网址.内容
验证字符串 = 编辑框_验证字符串.内容
是否UTF解码 = 选择框_UTF解码.选中
.如果真 (验证网址 = “” 或 验证字符串 = “”)
  信息框 (“网址或字符串填写错误!”, 48 + 65536, )
  按钮_测试.禁止 = 假
  返回 ()
.如果真结束
bool = 测试.创建 (&测试验证网址)
.如果真 (bool = 真)
  测试.等待2 ()
  .判断开始 (测试.取返回值 () = 1) ' 利用线程返回状态判断测试是否成功
    信息框 (“测试成功!验证网址和关键字可用”, 64 + 65536, )
  .默认
    信息框 (“测试失败!验证网址和关键字符串不可用”, 48 + 65536, )
  .判断结束
.如果真结束
按钮_测试.禁止 = 假
.子程序 测试验证网址, 整数型
.局部变量 http, WinHttp
.局部变量 str, 文本型
http.Open (“GET”, 验证网址)
http.Set_User_Agent ()
http.Send ()
.判断开始 (是否UTF解码 = 真)
  str = http.GetResponseTextUtf8 ()
.默认
  str = http.GetResponseText ()
.判断结束
.如果真 (寻找文本 (str, 验证字符串, , 假) ≠ -1)
  返回 (1) ' 返回状态用于判断是否成功
.如果真结束
返回 (0)
.子程序 _按钮_导入_被单击
.局部变量 int, 整数型
.局部变量 str, 文本型
.局部变量 strs, 文本型, , "0"
.局部变量 ip, 文本型
.局部变量 端口, 文本型
.局部变量 o, 整数型
通用对话框_浏览.类型 = 0
通用对话框_浏览.过滤器 = “文本文档(*.txt)|*.txt”
.如果真 (通用对话框_浏览.打开 () = 假)
  返回 ()
.如果真结束
按钮_导入.禁止 = 真
int = 打开文件 (通用对话框_浏览.文件名, 1, )
.如果真 (int = 0)
  按钮_导入.禁止 = 假
  返回 ()
.如果真结束
.判断循环首 (是否在文件尾 (int, ) = 假)
  str = 读入一行 (int)
  str = 删首尾空 (str)
  strs = 分割文本 (str, “:”, 2)
  .如果真 (取数组成员数 (strs) = 2)
    ip = strs [1]
    端口 = strs [2]
    .如果真 (ip ≠ “” 且 端口 ≠ “”)
      o = 列表_代理.插入表项 (, , , 0, , )
      列表_代理.置标题 (o, 0, 到文本 (o + 1))
      列表_代理.置标题 (o, 1, ip)
      列表_代理.置标题 (o, 2, 端口)
      列表_代理.置标题 (o, 3, “**”)
      列表_代理.置标题 (o, 4, “-”)
      _处理事件 ()
    .如果真结束
  .如果真结束
.判断循环尾 ()
关闭文件 (int)
状态条_状态.置文本 (0, “代理总数:” + 到文本 (列表_代理.取表项数 ()))
按钮_导入.禁止 = 假
.子程序 _按钮_导出_被单击
.局部变量 bool, 逻辑型
.局部变量 i, 整数型
.局部变量 int, 整数型
.局部变量 ip, 文本型
.局部变量 端口, 文本型
.局部变量 time, 文本型
.局部变量 stop, 文本型
.局部变量 text, 文本型
.局部变量 len, 整数型
.如果真 (列表_代理.取表项数 () < 1)
  信息框 (“没代理可导出”, 48 + 65536, , )
  返回 ()
.如果真结束
bool = 信息框 (“是否只导出有效代理”, #是否钮 + 48 + 65536, ) = #是钮
通用对话框_浏览.类型 = 1
通用对话框_浏览.过滤器 = “文本文档(*.txt)|*.txt”
.如果真 (通用对话框_浏览.打开 () = 假)
  返回 ()
.如果真结束
按钮_导出.禁止 = 真
int = 打开文件 (通用对话框_浏览.文件名, 4, )
移到文件尾 (int)
.变量循环首 (0, 列表_代理.取表项数 () - 1, 1, i)
  _处理事件 ()
  stop = 列表_代理.取标题 (i, 4)
  .如果真 (bool = 真 且 stop ≠ “验证成功”)
    到循环尾 ()
  .如果真结束
  ip = 列表_代理.取标题 (i, 1)
  端口 = 列表_代理.取标题 (i, 2)
  time = 列表_代理.取标题 (i, 3)
  text = ip + “:” + 端口 + “----” + time
  .如果真 (bool = 假)
    text = text + “----” + stop
  .如果真结束
  写文本行 (int, text)
  len = len + 1
.变量循环尾 ()
关闭文件 (int)
信息框 (“保存:” + 通用对话框_浏览.文件名 + “ 成功!” + #换行符 + “共导出:” + 到文本 (len) + “ 条。”, 64 + 65536, )
按钮_导出.禁止 = 假
.子程序 _按钮_开始停止_被单击
.局部变量 text, 文本型
.局部变量 bool, 逻辑型
.局部变量 len, 整数型
按钮_开始停止.禁止 = 真
text = 按钮_开始停止.标题
.判断开始 (text = “开始验证”)
  len = 列表_代理.取表项数 ()
  .如果真 (len < 1)
    信息框 (“请先导入要验证的代理”, 48 + 65536, )
    按钮_开始停止.禁止 = 假
    返回 ()
  .如果真结束
  验证网址 = 删首尾空 (编辑框_验证网址.内容)
  验证字符串 = 编辑框_验证字符串.内容
  .如果真 (验证网址 = “” 或 验证字符串 = “”)
    信息框 (“验证网址或字符串不正确!”, 48 + 65536, )
    按钮_开始停止.禁止 = 假
    返回 ()
  .如果真结束
  是否UTF解码 = 选择框_UTF解码.选中
  连接超时 = 到整数 (编辑框_连接超时.内容)
  验证超时 = 到整数 (编辑框_验证超时.内容)
  连续赋值 (0, 已完成数量, 有效数量, 失效数量, 保证显示索引)
  更新状态条 ()
  bool = 线程.创建 (&工作)
  .如果真 (bool = 真)
    返回 ()
  .如果真结束
.判断 (text = “停止验证”)
  按钮_开始停止.标题 = “正在停止”
  按钮_暂停继续.禁止 = 真
  按钮_暂停继续.标题 = “暂停验证”
  线程池.销毁 (0)
  线程.等待2 ()
  按钮_开始停止.标题 = “开始验证”
.默认
.判断结束
按钮_开始停止.禁止 = 假
.子程序 _按钮_暂停继续_被单击
.局部变量 text, 文本型
按钮_暂停继续.禁止 = 真
text = 按钮_暂停继续.标题
.判断开始 (text = “暂停验证”)
  线程池.暂停 ()
  按钮_暂停继续.标题 = “继续验证”
.判断 (text = “继续验证”)
  线程池.继续 ()
  按钮_暂停继续.标题 = “暂停验证”
.默认
.判断结束
按钮_暂停继续.禁止 = 假
.子程序 工作
.局部变量 并发线程数, 整数型
.局部变量 bool, 逻辑型
.局部变量 len, 整数型
.局部变量 i, 整数型
.局部变量 空闲线程数, 整数型
.局部变量 int, 整数型
按钮_开始停止.标题 = “正在启动”
.如果真 (连接超时 < 500)
  连接超时 = 500
.如果真结束
.如果真 (验证超时 < 500)
  验证超时 = 500
.如果真结束
临界.进入 ()
并发线程数 = 到整数 (编辑框_并发线程数.内容)
临界.退出 ()
.如果真 (并发线程数 < 1)
  并发线程数 = 1
.如果真结束
bool = 线程池.创建 (并发线程数)
.如果真 (bool = 假)
  临界.进入 ()
  按钮_开始停止.标题 = “开始验证”
  按钮_开始停止.禁止 = 假
  临界.退出 ()
  返回 ()
.如果真结束
临界.进入 ()
按钮_开始停止.标题 = “停止验证”
按钮_开始停止.禁止 = 假
按钮_暂停继续.标题 = “暂停验证”
按钮_暂停继续.禁止 = 假
len = 列表_代理.取表项数 () - 1 ' 列表索引从0开始
临界.退出 ()
i = 0
.判断循环首 (i ≤ len)
  空闲线程数 = 线程池.取_空闲线程数 ()
  .如果真 (空闲线程数 > 0)
    int = len - i + 1
    .如果真 (int > 空闲线程数)
      int = 空闲线程数
    .如果真结束
    .计次循环首 (int, )
      线程池.投递任务 (&验证子程序, i)
      i = i + 1
    .计次循环尾 ()
  .如果真结束
  bool = 线程池.等待任务动态 ()
  .如果真 (bool = 假) ' 返回假 表示线程池被执行销毁 也表示用户手动点了停止
    返回 ()
  .如果真结束
  更新状态条 ()
.判断循环尾 ()
' 等待剩余任务执行完毕
.判断循环首 (线程池.取_是否空闲 () = 假)
  .如果真 (线程池.取_状态 () ≠ #线程池_正在工作)
    返回 ()
  .如果真结束
  bool = 线程池.等待任务动态 (100)
  .如果真 (bool = 真)
    更新状态条 ()
  .如果真结束
.判断循环尾 ()
更新状态条 ()
' 执行停止
临界.进入 ()
按钮_开始停止.禁止 = 真
按钮_开始停止.标题 = “正在停止”
按钮_暂停继续.禁止 = 真
按钮_暂停继续.标题 = “暂停验证”
临界.退出 ()
线程池.销毁 (0)
信息框 (“验证完毕!” + #换行符 + “有效代理:” + 到文本 (有效数量) + #换行符 + “失效代理:” + 到文本 (失效数量), 64 + 65536, )
临界.进入 ()
按钮_开始停止.标题 = “开始验证”
按钮_开始停止.禁止 = 假
临界.退出 ()
.子程序 验证子程序
.参数 i, 整数型
.局部变量 ip地址, 文本型
.局部变量 端口, 文本型
.局部变量 http, WinHttp
.局部变量 str, 文本型
.局部变量 time, 整数型
.局部变量 timing, 整数型
.局部变量 bool, 逻辑型
.如果真 (线程池.取_状态 () ≠ #线程池_正在工作)
  返回 ()
.如果真结束
临界.进入 ()
ip地址 = 列表_代理.取标题 (i, 1)
端口 = 列表_代理.取标题 (i, 2)
临界.退出 ()
.如果真 (ip地址 = “” 或 端口 = “”)
  原子_递增 (已完成数量)
  返回 ()
.如果真结束
time = 取启动时间 ()
http.SetProxy (2, ip地址 + “:” + 端口)
http.SetTimeouts (连接超时, 连接超时, 验证超时, 验证超时)
http.Open (“GET”, 验证网址, 真)
http.Set_User_Agent ()
http.Send ()
timing = 验证超时 \ 1000 + 选择 (验证超时 % 1000 > 0, 1, 0)
.计次循环首 (timing, ) ' 这样写是为了能快速相应停止
  bool = http.WaitForResponse (1) ' 单位 秒
  .如果真 (bool = 真)
    跳出循环 ()
  .如果真结束
  .如果真 (线程池.取_状态 () ≠ #线程池_正在工作) ' 当用户手动停止时 线程池状态就变了 这样就能触发返回了
    http.Abort () ' 终止连接
    原子_递增 (已完成数量)
    返回 ()
  .如果真结束
.计次循环尾 ()
time = 取启动时间 () - time ' 算出超时
.判断开始 (bool = 真)
  .判断开始 (是否UTF解码 = 真)
    str = http.GetResponseTextUtf8 ()
  .默认
    str = http.GetResponseText ()
  .判断结束
.默认
  http.Abort ()
.判断结束
.判断开始 (str = “”)
  原子_递增 (失效数量)
  设置表象 (i, “*/*”, 选择 (time > 连接超时, “验证失败”, “连接超时”), 2)
.判断 (寻找文本 (str, 验证字符串, , 假) ≠ -1)
  原子_递增 (有效数量)
  设置表象 (i, 到文本 (time), “验证成功”, 选择 (time < 10000, 1, 3))
.默认
  原子_递增 (失效数量)
  设置表象 (i, “*/*”, “验证失败”, 2)
.判断结束
原子_递增 (已完成数量)
.子程序 设置表象
.参数 index, 整数型
.参数 time, 文本型
.参数 stop, 文本型
.参数 State, 整数型
临界.进入 ()
列表_代理.置标题 (index, 3, time)
列表_代理.置标题 (index, 4, stop)
列表_代理.置状态图片 (index, State)
.如果真 (index > 保证显示索引)
  列表_代理.保证显示 (index + 1)
  保证显示索引 = index + 1
.如果真结束
临界.退出 ()
.子程序 更新状态条
临界.进入 ()
状态条_状态.置文本 (1, “已完成验证:” + 到文本 (已完成数量))
状态条_状态.置文本 (2, “有效代理数:” + 到文本 (有效数量))
状态条_状态.置文本 (3, “失效代理数:” + 到文本 (失效数量))
临界.退出 ()
.子程序 __主窗口_将被销毁
线程池.销毁 ()
' 防止用户意外点击红叉叉

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言实现多线程计算的代码

    多线程计算 此功能需要加载精易模块5.6 .版本 2 .支持库 iext .程序集 窗口程序集1 .程序集变量 总线程id, 整数型 .程序集变量 线程判断数量, 整数型 .程序集变量 线程总数, 整数型 .程序集变量 线程id, 整数型 .程序集变量 当前表项, 整数型 .程序集变量 许可证, 整数型 .子程序 __启动窗口_创建完毕 .局部变量 i1, 整数型 .计次循环首 (10000, i1) 置随机数种子 () 超级列表框1.插入表项 (, , , , , ) 超级列表框1.置标题 (

  • 易语言通过get的方式多线程刷微视播放量的代码

    全局变量表 .版本 2 .全局变量 skey, 文本型 .全局变量 gtk, 文本型 QQ登陆代码 .版本 2 .支持库 spec .程序集 窗口程序集_窗口1 .子程序 _超文本浏览框1_载入开始 .局部变量 正则, 正则表达式 .局部变量 cookie, 文本型 cookie = 网页_取Cookie ("qq.com", ) 调试输出 (cookie) .如果真 (寻找文本 (cookie, ";skey=", , 假) ≠ -1) 正则.创建 ("

  • 详解易语言的多线程模块

    精易模块 子程序名:线程_启动 [首拼] xc_qd [备注] 成功返回线程句柄,失败返回0 [调用格式] [返回值类型] 整数型 <有返回值> 线程_启动(要启动的子程序,要传去子程序的参数) 『参数说明』 参数个数:2 参数1:要启动的子程序, 子程序指针 参数2:要传去子程序的参数, 整数型, 可空, 往子程序里面传递一个整数型的参数 你可以传递一个整数型的参数 如果你需要传递的是文本 你可以把文本变量的地址传过去 取指针地址_文本型 () 然后在用指针到文本还原成文本 指针_到文本 紫

  • 易语言关闭多线程句柄方法

    命令名 :关闭线程句柄 返回真表示已成功关闭线程句柄.在Linux下,如果线程已经结束,本命令可能返回假.本命令为初级命令. 参数 数据类型 说明 线程句柄 整数型(int) 可通过"启动线程"的第三个参数获取线程句柄. 使用例子: .版本 2 .支持库 EThread .程序集 程序集1 .程序集变量 线程句柄, 整数型 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 启动线程 (&子程序1, , 线程句柄) 关闭线程句柄 (线程句柄) 返回 (0) '

  • 易语言多线程多任务下载器的代码

    多线程多任务下载模块源码 1.DLL命令表 .版本 2 .DLL命令 InternetGetConnectedStateHTTP, , "Wininet.dll", "InternetGetConnectedState", 公开 .参数 lpdwFlags, 整数型, 传址 .参数 dwReserved, 整数型 .DLL命令 InternetOpenAHTTP, 整数型, "Wininet.dll", "InternetOpenA&q

  • 简单的易语言多线程应用实例

    多线程确实挺复杂的,洪雨不是很了解,也不想深入了解 这里只是把主要的命令和重点记录一下. 主要流程就是 1.启动窗口创建完毕 创建许可证 2.启动窗口将被销毁 删除许可证 3.一个线程操作的时候要 进入许可区 4.操作完后要 退出许可区 操作的数字最好用局部变量来装 信息框要在调用标签反馈事件 可用支持库的,也可用精易模块"类_线程池",也可用精易的模块的子程序 严格按照流程来,就不容易崩溃了 以上就是关于多线程应用实例的知识内容,感谢大家对我们的支持.

  • 解决易语言多线程出错的问题

    log_Content 最近在给客户写软件,发现我这边一直没有发现出错的问题,但是客户的软件一运行多线程就出错,一直找不到问题,找了好久才找到解决方法,原来是CPU的问题,多线程对于双核CPU亲和性上有问题,现在找到问题的解决方法,顺便记录一下,或许有朋友遇到同样的问题,可以一起参考. DLL命令: .版本 2 .DLL命令 SetProcessAffinityMask, 整数型, , , 公开, 设置CPU亲和性 进程句柄 返回CPU号 .参数 hProcess, 整数型 .参数 hProce

  • 详解易语言启动多线程

    用易语言写多线程应用要么使用多线程相关的api,支持库或模块,其实那些支持库或模块也都是封装的api,但是要比api使用方便. 总体来说易语言官方的多线程支持库要比一些杂七杂八的模块好多了. 支持库勾选上之后就可以使用易语言的多线程支持库了. 首先看用易语言多线程支持库创建线程的命令:启动线程: 命令名:启动线程 创建并启动一条线程,可重复使用以创建多条线程,成功返回真,失败返回假. 参数 数据类型 说明   参数<1>的名称为"欲执行的子程序" 子程序指针(SubPtr)

  • 易语言实现多线程验证代理是否有效的代码

    载入程序 .版本 2 .程序集 启动 .子程序 _启动子程序, 整数型 载入 (_主窗口, , 假) 返回 (0) 多线程的方式验证ip的代码 此功能需要加载鱼刺类_线程操作模块和鱼刺类_HTTP模块 .版本 2 .支持库 iext .程序集 主窗口程序集 .程序集变量 线程池, 鱼刺类_线程池Ex, , , 框架 .程序集变量 临界, 鱼刺类_临界许可 .程序集变量 线程, 鱼刺类_线程操作 .程序集变量 验证网址, 文本型, , , 配置 .程序集变量 验证字符串, 文本型 .程序集变量 是

  • 易语言的网络验证实现详解

    易语言就是一种脚本语言,他是采用的封装形式去完成 他在5.0以下版本时,都是采用的易语言开发环境的编译模式,同时是采用C++编译 他主要以中文编程,深受新手朋友欢迎,所以这这里,我也推荐大家去学习一下 易语言其实就像我们人穿着衣服一样的,需要看到内在的话,就需要先脱掉衣服,其实也就是和壳的类型相差无己 00445151 >/$  55            push ebp             ..载入程序后的入口 00445152  |.  8BEC          mov ebp,es

  • 易语言超级列表框表项关键字搜索代码示例

    超级列表框表项关键字搜索示例 .版本 2 .支持库 iext .程序集 启动窗口程序集 .程序集变量 表项索引, 整数型 .子程序 _查找表项按钮_被单击 .局部变量 临时文本, 文本型 .局部变量 索引, 整数型 .局部变量 是否找到, 逻辑型 .局部变量 a, 整数型 .如果真 (输入框 ("请输入需要查找的内容", "查找表项", "易语言7", 临时文本, ) = 真) 是否找到 = 假 .计次循环首 (超级列表框.取表项数 (), a)

  • 易语言修改指定网页为浏览器主页的代码

    监控浏览器进程,结束后用 运行(浏览器目录+" "+地址) 来实现主页修改 DLL命令表 .版本 2 .DLL命令 CoInitialize, 整数型, "Ole32.dll" .参数 pvReserved, 整数型 .DLL命令 CoUninitialize, , "Ole32.dll" .DLL命令 RegisterWindowMessageA, 整数型, , "RegisterWindowMessageA" .参数 lp

  • 易语言解析获得无水印下载地址的代码

    此功能需要加载精易模块5.6 常量数据表 .版本 2 .常量 head, "<文本长度: 52>", , 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64 取抖音无水印链接代码 .版本 2 .程序集 窗口程序集_启动窗口 .子程序 _解析按钮_被单击 无水印地址编辑框.内容 = 获取抖音链接 (原地址编辑框.内容) .子程序 获取抖音链接, 文本型, , 返回无水印链接 .参数 分享链接, 文本型, , 分享链接地址

  • 易语言使用超文本显示新浪天气预报的代码

    常量数据表 .版本 2 .常量 v1, "<文本长度: 24>", , <p class="inx_w_city_c"> .常量 K, "<文本长度: 8>", , url=http .常量 J, "<文本长度: 47>", , <a href="http://share.sina.cn/callback?content= .常量 v2, "<文本

随机推荐