|
发表于 2025-7-25 13:11:51
|
显示全部楼层
河北省秦皇岛市
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 集_TCP客户Duan | 客户Duan | | 集_服务器IP | 文本型 | | 集_服务器端口 | 整数型 | | 集_验证状态 | 逻辑型 | |
按钮_连接.标题 = "连接服务器" 按钮_打开功能.标题 = "打开功能窗口" 按钮_打开功能.禁止 = 真 .局部变量 IP, 文本型 .局部变量 端口, 文本型 IP = 编辑框_IP.内容 端口 = 编辑框_端口.内容 如果 (IP = "" 或 端口 = "" ) 信息框 ("请输入服务器IP和端口", 0, "提示", ) 返回 () 如果 (集_TCP客户Duan. 连接 (IP, 到整数 (端口 )) ) 集_服务器IP = IP  集_服务器端口 = 到整数 (端口 ) 按钮_连接.标题 = "连接中..."  按钮_连接.禁止 = 真 线程_启动 (&验证线程, , ) 信息框 ("连接服务器失败", 0, "错误", ) .局部变量 验证数据, 文本型 .局部变量 接收数据, 文本型 验证数据 = "AUTH|" + 编辑框_用户名.内容 + "|" + 编辑框_密码.内容 集_TCP客户Duan. 发送数据 (到字节集 (验证数据 ), ) .局部变量 超时计数, 整数型 判断循环首 (超时计数 < 30 ) 程序_延时 (100 ) 接收数据 = 到文本 (集_TCP客户Duan. 取回数据 ())   如果 (寻找文本 (接收数据, "AUTH_SUCCESS", , 假) > 0 )  集_验证状态 = 真  跳出循环 ()   如果 (寻找文本 (接收数据, "AUTH_FAIL", , 假) > 0 )   集_验证状态 = 假   跳出循环 ()   超时计数 = 超时计数 + 1  判断循环尾 () 如果 (集_验证状态 ) 按钮_打开功能.禁止 = 假  标签_状态.标题 = "验证成功"   按钮_连接.禁止 = 假  按钮_连接.标题 = "重新连接"  标签_状态.标题 = "验证失败"  .局部变量 功能窗口, 窗口_功能 功能窗口. 创建 ()功能窗口. 初始化TCP (集_TCP客户Duan, 集_服务器IP, 集_服务器端口 )功能窗口. 显示 ()隐藏 ()
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_功能窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 集_TCP客户Duan | 客户Duan | | 集_服务器IP | 文本型 | | 集_服务器端口 | 整数型 | |
|
初始化TCP | | | |
客户Duan对象 | 客户Duan | | | | 服务器IP | 文本型 | | | | 服务器端口 | 整数型 | | | |
集_TCP客户Duan = 客户Duan对象 集_服务器IP = 服务器IP 集_服务器端口 = 服务器端口 集_TCP客户Duan. 置数据到达事件 (&功能窗口_数据到达 )集_TCP客户Duan. 置连接断开事件 (&功能窗口_连接断开 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 接收数据 | 字节集 | | | 文本数据 | 文本型 | | |
接收数据 = 集_TCP客户Duan. 取回数据 ()文本数据 = 到文本 (接收数据 ) 编辑框_接收. 加入文本 (文本数据 + #换行符 ) 如果 (寻找文本 (文本数据, "CMD|", , 假) > 0 ) 处理命令 (文本数据 ) 信息框 ("与服务器连接已断开", 0, "提示", )关闭 ()发送内容 = 编辑框_发送.内容 如果 (发送内容 ≠ "" ) 集_TCP客户Duan. 发送数据 (到字节集 (发送内容 ), ) 编辑框_发送.内容 = "" 信息框 ("请输入要发送的内容", 0, "提示", ) 集_TCP客户Duan. 断开连接 ()
.类 客户Duan .成员变量 套接字, 整数型 .成员变量 服务器IP, 文本型 .成员变量 服务器端口, 整数型 .成员变量 数据到达事件, 子程序指针 .成员变量 连接断开事件, 子程序指针 .方法 连接, 逻辑型 |
(暂未填写DLL命令名) | | | |
(未填写库文件名) | |
(未填写命令名) | |
IP | 文本型 | | | 端口 | 整数型 | | |
.局部变量 地址, sockaddr_in 套接字 = socket ( #AF_INET, #SOCK_STREAM, 0 ) 如果 (套接字 = -1 ) 返回 (假)地址.sin_family = #AF_INET 地址.sin_port = 端口反转序 (端口 )地址.sin_addr.S_addr = inet_addr (IP ) 如果 (connect (套接字, 地址, 取结构大小 (地址 )) = 0 ) 服务器IP = IP  服务器端口 = 端口 线程_启动 (&接收线程, , ) 返回 (真) 返回 (假) .方法 断开连接 如果 (套接字 ≠ -1 ) closesocket (套接字 ) 套接字 = -1  .方法 发送数据, 逻辑型 |
(暂未填写DLL命令名) | | | |
(未填写库文件名) | |
(未填写命令名) | |
数据 | 字节集 | | |
.局部变量 发送长度, 整数型 发送长度 = send (套接字, 数据, 取字节集长度 (数据 ), 0 )返回 (发送长度 = 取字节集长度 (数据 )) .方法 取回数据, 字节集 .局部变量 缓冲区, 字节集 .局部变量 接收长度, 整数型 缓冲区 = 取空白字节集 (4096 )接收长度 = recv (套接字, 缓冲区, 4096, 0 ) 如果 (接收长度 > 0 ) 返回 (取字节集左边 (缓冲区, 接收长度 ))  返回 ({ }) .方法 置数据到达事件 |
(暂未填写DLL命令名) | | | |
(未填写库文件名) | |
(未填写命令名) | |
事件处理 | 子程序指针 | | |
数据到达事件 = 事件处理 .方法 置连接断开事件 |
(暂未填写DLL命令名) | | | |
(未填写库文件名) | |
(未填写命令名) | |
事件处理 | 子程序指针 | | |
连接断开事件 = 事件处理 .方法 接收线程 判断循环首 (真) .局部变量 数据, 字节集  数据 = 取回数据 ()  如果 (取字节集长度 (数据 ) > 0 )  如果 (数据到达事件 ≠ 0 )  调用子程序 (数据到达事件, , , 数据 )   如果 (连接断开事件 ≠ 0 )   调用子程序 (连接断开事件, , )  跳出循环 ()  判断循环尾 ().结束 类
编辑框_IP:输入服务器IP
编辑框_端口:输入服务器端口
编辑框_用户名:验证用户名
编辑框_密码:验证密码
按钮_连接:连接服务器并验证
按钮_打开功能:打开功能窗口
标签_状态:显示连接状态
|
|