开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1211|回复: 4
收起左侧

[已解决] 写网络验证同步异步问题

 关闭 [复制链接]
结帖率:85% (41/48)
发表于 2017-10-16 09:01:00 | 显示全部楼层 |阅读模式   河北省石家庄市
10精币
我用远程服务器支持库写网络验证。现在有一个问题比较纠结。
原本客户Duan我用的异步方式,所有返回数据都在 [处理函数] 中。有些功能还是比较适用的,比如客户发送 [登陆] ,服务器返回后,客户在 [处理函数] 中判断是否登陆成功。
但是假如我有一个按钮,功能是 [cha询真伪并显示数据], 要求cha询为真时,才显示数据。这样如果用异步的方式,cha询真伪的结果要在 [处理函数] 中的得到,无法直接在按钮子程序中得到,以至于无法判断是否要显示数据。。。有点小纠结。

简单的说,就是原本用异步方式,那如何在一个子程序中直接、及时得到服务器返回的结果。
我能想到的方法,
1、换同步方式。但是担心会不会比异步的效率低。(自我感觉,如果客户不多的话,同步应该也不会有太大问题)
2、使用一个全局逻辑变量b,在 [处理函数] 中得到b的真假,然后在按钮子程序中做一个 循环判断,并规定一个时间,在时间内得到b的结果,如果没有得到,那就让b=假。。

请有过制作 类似功能的朋友,给出点建议。

最佳答案

查看完整内容

给你个思路: 创建一个全局变量=返回消息 在客户Duan数据达到中,将返回的数据赋值给返回消息 比如你按钮异步了一个消息,那么在下面使用: 启动时间=取启动时间() 判断循环首(真) 处理事件() 判断(取文本左边(返回消息,x)="xxxx")'如果返回消息类型=“XXX” (类型自定义的,比如:注册账号|注册结果) 跳出循环() ·否则 用时=启动时间()-启动时间 如果真(用时>=X秒)‘单位自行换上 返回消息=-3 跳 ...

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

结帖率:100% (53/53)

签到天数: 1 天

发表于 2017-10-16 09:01:01 | 显示全部楼层   福建省宁德市
给你个思路:
创建一个全局变量=返回消息
在客户Duan数据达到中,将返回的数据赋值给返回消息

比如你按钮异步了一个消息,那么在下面使用:

启动时间=取启动时间()
判断循环首(真)
处理事件()
判断(取文本左边(返回消息,x)="xxxx")'如果返回消息类型=“XXX”  (类型自定义的,比如:注册账号|注册结果)
跳出循环()
·否则  
用时=启动时间()-启动时间
如果真(用时>=X秒)‘单位自行换上
   返回消息=-3
   跳出循环()

判断循环尾()

如果真(返回消息=-1)
    信息框(接收超时)
    返回()

这里就处理返回消息具体的代码就好

大概是这一样,具体代码你根据你的代码要求编辑

注意:客户Duan发送消息,服务器返回消息的格式一定要事先想好,框架设计好,比如消息标识,消息内容等等,这样的消息格式方便解析

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

签到天数: 13 天

发表于 2017-10-16 10:29:28 | 显示全部楼层   四川省成都市
效率上基本不用考虑,同步的效率依然是足够使用的。处理好高并发不丢包,到时候用什么框架你自然就会清楚了
回复

使用道具 举报

结帖率:92% (24/26)

签到天数: 3 天

发表于 2017-10-16 10:36:59 | 显示全部楼层   江苏省苏州市
首先你要定义好你每次发送请求的代码开头     比如“cha询料号{}”+ 你的请求内容        这里的{}   是为了方便你服务器解析的时候用来分割文本的     你的服务器就能取到你的请求内容      
然后服务器处理完内容之后 也要返回一个类似格式的数据,方便客户Duan解析      
下面是一段我客户Duan发送请求的代码  及返回文本的处理


.版本 2
.如果真 (数组 [1] = “料号cha询”)
    料号cha询处理 (数组 [2])
    返回 ()



.版本 2
.支持库 iext
.子程序 _按钮_料号cha询_被单击
.局部变量 料号, 文本型
标签_cha询结果.标题 = “”
超级列表框_cha询结果.全部删除 ()
.如果 (删首尾空 (编辑框_料号cha询.内容) = “”)
    料号 = “-1”
.否则
    料号 = 删首尾空 (编辑框_料号cha询.内容)
.如果结束
发送请求 (“料号cha询{}” + 料号, )

.子程序 料号cha询处理
.参数 cha询结果, 文本型
.局部变量 数组, 文本型, , "0"
.局部变量 数组1, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 表项, 整数型
.如果真 (cha询结果 = “无当前记录”)
    标签_cha询结果.标题 = “无当前记录”
    返回 ()
.如果真结束
数组 = 分割文本 (cha询结果, #换行符, )
.计次循环首 (取数组成员数 (数组), i)
    数组1 = 分割文本 (数组 [i], “|”, )
    表项 = 超级列表框_cha询结果.插入表项 (, , , , , )
    超级列表框_cha询结果.置标题 (表项, 0, 到文本 (i))
    超级列表框_cha询结果.置标题 (表项, 1, 数组1 [1])
    超级列表框_cha询结果.置标题 (表项, 2, 数组1 [2])
    超级列表框_cha询结果.置标题 (表项, 3, 数组1 [3])
    超级列表框_cha询结果.置标题 (表项, 4, 数组1 [4])
    .如果真 (取数组成员数 (数组1) < 5)
        到循环尾 ()
    .如果真结束
    超级列表框_cha询结果.置标题 (表项, 5, 数组1 [5])
.计次循环尾 ()

回复

使用道具 举报

结帖率:78% (29/37)

签到天数: 1 天

发表于 2017-10-16 12:03:06 | 显示全部楼层   河南省漯河市
我最近弄了一个类似的也是 采用异步 但是代码很完美 你的写法和思路有问题
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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