开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 217|回复: 7
收起左侧

[已解决] tcp客户Duan如何把事件挂接到另一个窗口?

 关闭 [复制链接]
结帖率:100% (1/1)
发表于 2025-7-25 13:11:50 | 显示全部楼层 |阅读模式   广东省湛江市
10精币
tcp客户Duan在启动窗口创建,网络验证成功后创建另一个功能窗口,如何把接收数据事件和发送数据那些功能移植到另一个窗口?

最佳答案

查看完整内容

[e=1].版本 2 .支持库 EThread .支持库 sock .程序集 窗口程序集_启动窗口 .程序集变量 集_TCP客户Duan, 客户Duan .程序集变量 集_服务器IP, 文本型 .程序集变量 集_服务器端口, 整数型 .程序集变量 集_验证状态, 逻辑型 .子程序 __启动窗口_创建完毕 按钮_连接.标题 = "连接服务器" 按钮_打开功能.标题 = "打开功能窗口" 按钮_打开功能.禁止 = 真 ' 初始禁用 .子程序 _按钮_连接_被单击 .局部变量 IP, 文 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (47/47)

签到天数: 3 天

发表于 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)  ' 3秒超时
程序_延时 (100)
接收数据 = 到文本 (集_TCP客户Duan.取回数据 ())

如果 (寻找文本 (接收数据, "AUTH_SUCCESS", , ) > 0)
集_验证状态 = 真
跳出循环 ()
如果 (寻找文本 (接收数据, "AUTH_FAIL", , ) > 0)
集_验证状态 = 假
跳出循环 ()


超时计数 = 超时计数 + 1
判断循环尾 ()

如果 (集_验证状态)
按钮_打开功能.禁止 = 假
标签_状态.标题 = "验证成功"
按钮_连接.禁止 = 假
按钮_连接.标题 = "重新连接"
标签_状态.标题 = "验证失败"

子程序名返回值类型公开备 注
_按钮_打开功能_被单击  
.局部变量 功能窗口, 窗口_功能

功能窗口.创建 ()
功能窗口.初始化TCP (集_TCP客户Duan, 集_服务器IP, 集_服务器端口)
功能窗口.显示 ()
隐藏 ()  ' 隐藏主窗口



i支持库列表   支持库注释   
EThread多线程支持库
sock网络通讯支持库

  
窗口程序集名保 留  保 留备 注
窗口程序集_功能窗口   
变量名类 型数组备 注
集_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.断开连接 ()


i支持库列表   支持库注释   
sock网络通讯支持库

  
.类 客户Duan
.成员变量 套接字, 整数型
.成员变量 服务器IP, 文本型
.成员变量 服务器端口, 整数型
.成员变量 数据到达事件, 子程序指针
.成员变量 连接断开事件, 子程序指针
.方法 连接, 逻辑型
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在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命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
数据字节集
.局部变量 发送长度, 整数型

发送长度 = send (套接字, 数据, 取字节集长度 (数据), 0)
返回 (发送长度 = 取字节集长度 (数据))
.方法 取回数据, 字节集
.局部变量 缓冲区, 字节集
.局部变量 接收长度, 整数型

缓冲区 = 取空白字节集 (4096)
接收长度 = recv (套接字, 缓冲区, 4096, 0)

如果 (接收长度 > 0)
返回 (取字节集左边 (缓冲区, 接收长度))
返回 ({ })

.方法 置数据到达事件
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
事件处理子程序指针
数据到达事件 = 事件处理
.方法 置连接断开事件
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
事件处理子程序指针
连接断开事件 = 事件处理
.方法 接收线程
判断循环首 ()
.局部变量 数据, 字节集
数据 = 取回数据 ()

如果 (取字节集长度 (数据) > 0)
如果 (数据到达事件 ≠ 0)
调用子程序 (数据到达事件, , , 数据)
如果 (连接断开事件 ≠ 0)
调用子程序 (连接断开事件, , )
跳出循环 ()

判断循环尾 ()
.结束 类


编辑框_IP:输入服务器IP
编辑框_端口:输入服务器端口
编辑框_用户名:验证用户名
编辑框_密码:验证密码
按钮_连接:连接服务器并验证
按钮_打开功能:打开功能窗口
标签_状态:显示连接状态

回复

使用道具 举报

结帖率:95% (18/19)

签到天数: 10 天

发表于 2025-7-25 15:06:10 | 显示全部楼层   湖北省武汉市
  
变量名类 型静态数组备 注
a请求客户Duan 
' 把这个 请求客户Duan 放在 全局变量 那边就行了,它实际是个TCP请求客户Duan
a.连接 (, , , )
a.同步发送文本 (, , )


i支持库列表   支持库注释   
Exmlrpc远程服务支持库
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

 楼主| 发表于 2025-7-25 17:46:24 | 显示全部楼层   广东省湛江市
冬夏 发表于 2025-7-25 15:06
[e=1]
.版本 2
.支持库 Exmlrpc

研究了一下午还是没搞懂,能不能写详细点?或者留个联系方式?
回复

使用道具 举报

结帖率:60% (6/10)
发表于 2025-7-25 18:44:32 | 显示全部楼层   广西壮族自治区来宾市
把客户Duan设成全局变量,该怎么用就怎么用呀。还是说你这个客户Duan是一个组件?那就用_启动窗口.客户Duan.连接()这种方法来使用。
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

 楼主| 发表于 2025-7-25 18:54:38 | 显示全部楼层   广东省湛江市
21岁的天空 发表于 2025-7-25 18:44
把客户Duan设成全局变量,该怎么用就怎么用呀。还是说你这个客户Duan是一个组件?那就用_启动窗口.客户Duan ...

启动窗口创建的tcp用全局变量,另一个功能窗口引用tcp发送消息,没效果
回复

使用道具 举报

结帖率:88% (15/17)

签到天数: 10 天

发表于 2025-7-25 20:12:38 | 显示全部楼层   四川省广元市
什么意思?vx不回消息了
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

 楼主| 发表于 2025-7-26 11:37:56 | 显示全部楼层   广东省湛江市
信仰_ 发表于 2025-7-25 20:12
什么意思?vx不回消息了

咋跑这来了,哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表