|
发表于 2023-3-13 17:28:41
|
显示全部楼层
北京市北京市
.版本 2
.支持库 spec
.支持库 iext
.程序集 窗口程序集_启动窗口
.程序集变量 日志, 类_日志输出
.程序集变量 集_IP地址, 文本型
.程序集变量 线程池, 鱼刺类_线程池Ex
.程序集变量 多线程, 鱼刺类_线程操作
.程序集变量 集_许可证, 整数型
.子程序 _按钮_扫描_被单击
.局部变量 IP分割, 文本型, , "0"
.局部变量 端口号, 整数型
.如果 (按钮_扫描.标题 = “扫描”)
集_IP地址 = 编辑框_IP.内容
IP分割 = 分割文本 (集_IP地址, “.”, )
.如果真 (取数组成员数 (IP分割) ≠ 4)
信息框 (“IP格式不对!”, 16, , )
返回 ()
.如果真结束
多线程.置CPU亲和性 ()
多线程.创建 (&投递任务, , , , , , , , , )
按钮_扫描.标题 = “停止”
.否则
线程池.销毁 (, )
多线程.强制结束 ()
多线程.关闭句柄 ()
_删除进入许可证 (集_许可证)
按钮_扫描.标题 = “扫描”
.如果结束
.子程序 投递任务
.局部变量 端口号, 整数型
.局部变量 ret, 逻辑型
集_许可证 = _创建进入许可证 ()
线程池.创建 (10, 20, , , , , )
端口号 = 1
.判断循环首 (真)
.如果真 (端口号 ≥ 65535)
跳出循环 ()
.如果真结束
线程池.投递任务 (&端口测试, 端口号, )
调试输出 (到文本 (端口号))
端口号 = 端口号 + 1
延迟 (10)
.判断循环尾 ()
.判断循环首 (真)
.如果真 (线程池.取_执行线程数 () = 0)
线程池.销毁 (, )
多线程.强制结束 ()
多线程.关闭句柄 ()
_删除进入许可证 (集_许可证)
信息框 (“任务完成!”, 0, , )
跳出循环 ()
.如果真结束
延迟 (1000)
.判断循环尾 ()
.子程序 端口测试
.参数 端口号, 整数型
_进入许可区 (集_许可证)
状态条_提示信息.置文本 (1, “扫描” + 到文本 (端口号) + “端口中。。。”)
_退出许可区 (集_许可证)
.如果真 (客户1.连接 (集_IP地址, 端口号))
_进入许可区 (集_许可证)
日志.输出编辑框 (编辑框_结果.取窗口句柄 (), “端口” + 到文本 (端口号) + “已开放!”, 0, )
_退出许可区 (集_许可证)
返回 ()
.如果真结束 |
|