[转载红鱼儿]kbmmw 开发点滴:kbmWTCPIPInfyClientTransport联接状态

简介: kbmWTCPIPInfyClientTransport联接状态 当客户端请求一个Service时,kbmWTCPIPInfyClientTransport.Active是什么样呢?做一个简单的测试,原来是这样:当 kbmMWSimpleClient1.Request时,会检查使用的Transport是否Active,如果没有打开,则Active=True. 调用后,Transport.Active自动为True!当检查到已经为Active,则直接发出请求Request。
kbmWTCPIPInfyClientTransport联接状态

当客户端请求一个Service时,kbmWTCPIPInfyClientTransport.Active是什么样呢?做一个简单的测试,原来是这样:

当 kbmMWSimpleClient1.Request时,会检查使用的Transport是否Active,如果没有打开,则Active=True. 调用后,Transport.Active自动为True!当检查到已经为Active,则直接发出请求Request。

Transport关于联接有三个事件可用:
Connected:当Transport=True时触发
DisConnected:当Transport=False时触发
ConnectionLost:目前测到两种情况,服务器没有开启与开启后关掉服务器,这时,客户端的Transport发出请求时,因找不到服务器,会触发ConnectionLost事件,当关闭掉客户端应用时,还会触发DisConnected事件。

理解几个事件的触发机制点,对于处理界面很重要。比如当客户在使用的过程中,断网等原因无法正常执行客户端请求时,可以用这几个事件,做出友好的提示及进一步的处理。

MaxRetries:重新联接次数,默认值为0,即不重新联接。再做一下实验,看看这个属性的作用:
1.打开Server,让其可以接受用户端的请求
2.打开Client,向Server发出一次请求,这时,客户端的Transport变成Active状态
3.把Server关掉,再重新打开:当MaxRetries为0时,客户端无法向Server发出请求,触发ConnectionLost事件;当MaxRetries不为0,则客户端能够正常向Server发出请求并得到返回结果。这个特性真是太棒了!
4. 当设置为非0时,客户发出一次请求,在无法联接到服务器的情况,按该值尝试联接次数,每一次重新联接服务器,都触发OnReconnect事件,该事件中 的RetriesLeft参数,表明还剩余几次重新联接。可以根据这个值,显示一个重新联接的进度条给用户。当客户端执行了MaxRetries次联接报 务器的动作,都无法联接时,触发ConnectionLost事件。
总结MaxRetries属性,就是客户端在无法联接服务器的情况下,执行多少次尝试联接服务器。

客户端在向服务器发出一次请求后,即客户端联接服务器的状态下,把服务器关掉,即断开与客户端的联接,客户端竟没有出错误提示,而是静静的等待,配合MaxRetries属性的使用,对于适应恶劣网络环境,怎一个爽字了得!真是佩服kbmMW!

目录
相关文章
零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术
原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且快速的内建工具Clone ? ? 为什麽会说像是影分身之术呢? ? 请参照火影忍者(NARUTO): 《分身术》会分身术者,能以一身分出几身,几十身,乃至千百身。
1227 0
|
数据库 关系型数据库 MySQL
清幽傲竹实现的kbmMWServer数据库联接失败重联(转载红鱼儿)
1。修改kbmMWUnidac单元的TkbmMWUNIDACConnection.InternalOpenConnection方法,加上:            //支持unidac重联           FDatabase.
969 0
|
UED Java
[转载红鱼儿]Delphi XE7 update1进步太大了
写以下的文字是怀着无比兴奋的心情写的,急于同朋友们分享XE7的进步!1.更新的bug列表并不全 通过bug修正列表及发布的消息,可以看到up1修正了很多bug,正如我所说,有些bug并没有写到发布的bug列表中,如TextPrompt不显示的问题。
884 0
|
SQL 数据库
[转载红鱼儿]kbmmw 开发点滴:kbmMWQuery插入记录
想利用TkbmMWUNIDACQuery插入一条记录,结果遇到问题,显示: 不允许从数据类型 sql_variant 到 varchar 的隐式转换。请使用 CONVERT 函数来运行此查询。这是什么问题啊?下面是出问题的代码,很常规的写法。
892 0
|
数据处理
[转载红鱼儿]kbmmw 开发点滴:kbmmW服务端事务控制
关于kbmMW的事务控制,前文已经在客户端实现,通过kbmMWClientTransaction来控制多个数据集的提交,在客户端提交多数据集,实际上,是在客户端实现业务逻辑,并通过一个事务来完成数据处理,这是违反多层架构的做法,实际项目中,需要在服务端,往往是利用多个数据集进行业务处理,并且用事务来控制,那我们该怎么办呢?换句话说,如何在服务实现事务的控制。
820 0
[转载红鱼儿]kbmmw 开发点滴:kbmMWEventService的本质
在kbmMW创建服务向导中,有个“Eventoperated service”,其描述信息:同TkbmMWSimpleService一样,就是公布了一个附加的事件,来控制客户端请求,取代了ProcessRequest.
615 0