中间层断开后,客户端的Dcomconnection如何响应。(不想加socket组件等方式实现)(50分)

  • 主题发起人 主题发起人 sungirl1126
  • 开始时间 开始时间
S

sungirl1126

Unregistered / Unconfirmed
GUEST, unregistred user!
中间层意外断开后,有什么方式可让客户端的DcomConnection得到消息
 
定时发死亡判断!
 
我的方法是在系统空闲时检测。
DcomConnectionAfterdisconnection修改一个全局变量的值
OnIdle事件中检测该全局变量。
没发现出过什么问题
 
还有别的方法吗?
 
中间层断开后,不是要出现一个错误消息框吗?
 
我想知道有没有监听事件
 
做一个回调程序, 当应用层断开后,发送一个消息到客户端
这样就能达到效果
 
shuszj,
女程序员哟!
 
to shuszj:断开后,回调程序还能回叫到客户端????
 
是说加一个接口方法吗?
 
to billrobin :上次介绍的女程序员都没说过一句话:)
to yeath : 不是断开后,再回调,是在应用层退出时(OnClose事件中)给客户端发
送消息, 你不已经成功运行应用层发送客户端消息了吗?
to sungirl1126 : 其实是加一个接口方法, 你可以看看 yeath 的贴子
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1458617
也可以叫他把程序发给你(yeath 他很善解人意的)
 
看看回调接口能不能实现,我觉得断开之后应该回叫不到客户端 了。
 
意外中断是不会回叫的。
 
意外中断,只能在客户端捕捉错误事件,如果是正常退出,那是可以回叫的,我现在 在外面
星期一可以把代码发给你,你可以参考一下,这几天心情 不好.
我星期已经贴上来了啊,怎么今天又不见了.
 
我也正在考虑类似的问题,关注
 
to sungirl1126,
这类贴子在DFW上有很多。都是问应用层异常关闭所产生的问题?您现在所关心的是
中间层意外断开后,有什么方式可让客户端的DcomConnection得到消息,实际上我个人认为
可能解决问题思路应该放在应用层为什么断开?不应把客户端的DcomConnection得到消息
作为解决问题的突破口。因为我也是被这个问题困扰了很久,差不多都有3个月了。害得手
机时常被用户打暴。
我是如何解决问题的呢?
1:MycompanionI:=CoMyCOMcompanion.CreateRemote(MyCOMCompanionStr(4));
我以前常用早绑定的方式来取得接口的对象。但经过很长时间的测试,我发现客户端
断开后,应用层的资源得不到完全释放。所以现在已改成晚绑定。(李维的书上有)
2:大量的使用variant类型。以为用户的服务器几十万。无所谓内存和资源。现在很珍惜
系统开销。好象variant需要20个字节。宽字符串才12个字节。节约呀?
3:客户端断开后,一定要将释放所有资源。
4:bde的参数配置,您可以作一个测试,如果您启动20个客户端。如果打不开bde
administrator.同时,报出$2501错误,那么您需要改BDE的配置参数。比如缓存大小等。
这点很重要。
5:应用层在断开后,也要逐行代码检查资源释放问题,有create.必须要finally *.free.
6:有网友说到无状态对象。使用无状态对资源能得到很好的利用。有状态对象特别耗资源。
7:对了,还有一个死瑞星杀病毒软件也把我害惨了。特别它的那个防火墙。因为
DCOM是用211端口。它每次都要拦客户端的数据包。一旦数据包被拦下,应用层就以为客户端
死掉了,应用层就进入生命周期的维护。这也是造成应用层不正常的原因。我写了一个
杀瑞星的进程的程序。(客户端一起动,就把它的进程杀掉)对其它程序有用。但就是杀
不掉瑞星。我正在想办法,一定在程序起动时杀掉瑞星的进程。有瑞星就没有我的程序,有
我的程序就不能用瑞星,如果手动改瑞星端口不是很麻烦。所以必须杀掉瑞星这个臭小子。
8.。。。。
9.。。。
。。。。。。N
N+1:
最让人的头痛的是,我的程序从新写了一次。代码是逐行检查过的,发现确实有些
地方的算法需要改进,并大量使用了存储过程。同在存储过程已加密,用户是看不到
其中的算法的。存储过程代码写得最多的有18页。所以让用户很轻易拿走,不是坏菜了吗?
3 :2 f 18 25 27 2f :2 27 :2 18
:2 3 :8 1
1f
2
0 :9 1 :d 3 :2 2 :3 1 4 :2 1
81
4
:4 0 1 :a 0 1b
1 :4 0 5 :2 0
:2 3 :3 0 2 :7 0
5 4 :3 0 7
:2 0 1b 2 8
:2 0 4 :3 0 5
:3 0 a b 0
6 :4 0 7 :2 0
8 :3 0 2 :3 0
7 f 11 9
e 13 :3 0 :2 c
15 :2 0 17 10
1a :3 0 1a 0
1a 19 17 18
:6 0 1b :2 0 2
8 1a 1d :2 0
1 1b 1e :8 0
有谁能将瑞星的进程杀掉吗?
 
后退
顶部