易语言如何判断多线程验证代理是否有效
作者
小编给大家分享一下易语言如何判断多线程验证代理是否有效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
载入程序
.版本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 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~