最近碰到两个问题,一个是程序和数据库连接上了以后,中间网络断了,使用ADO查看Connection的状态还是打开的,郁闷,另一个问题从很早就存在,我一直没解决得了,就是我使用DCOM来进行多台机器间的数据传送(一台服务器/多个客户),也是中间网络断开,或者DCOM客户端程序异常死了,服务器端ATL生成的连接点发送程序部分还是要等待30秒以上才放弃对这个客户端程序的发送,转而发送下一个客户端,再次郁闷!望高手提供点解决办法。

解决方案 »

  1.   

    dcom中用了delay ping 技术减少网络流量。
      

  2.   

    TO ldsjlzy(小李) :
    “你采用可连接对象的客户端回调方法来做。客户端异常死掉也不会有问题。”感兴趣,能否详细说说?
      

  3.   

    to ldsjlzy(小李):
    客户端异常死掉后,服务器端能检测出来然后抛弃么?
    还有,如果是服务器端异常死掉,客户端怎么检测,然后告警?能详细说说么?我对这些很...非常...感兴趣
      

  4.   

    DCOM对每一个引出的对象(对应一个OID),也就是由客户端写实现代码的接口在一定的时间内“pinging"一次,如果发现远程引用己终止(客户端异常退出)则会忽略这个出接口对象。也就是说服务端能检测出来。如果服务端死了。那客户端调用服务端的方法无法返回,只能超时后捕捉错误信息了。
    可连接对象的应用要实现起来不难。找一些信息看看吧。
      

  5.   

    现在我的程序通信很频繁,多个客户端向一个服务器端进行连接,每个客户端创建了自己的连接点用来返回事件,但就是这个倒霉的DCOM建立在UDP上,采用delay ping方式导致了我的程序不能及时响应,我的服务器检测到一个硬件反映后,需要对所有的客户端一一发送反馈,这中间如有有一个客户端没能及时响应,就不能达到我的效果,我现在想知道DCOM是否能在它下面的UDP连接断开时就给我反馈,或者,我必须换SOCKET通信?
      

  6.   

    搞不懂,DCOM怎么跟UDP挂上了.DCOM的可连接点方式的广播可不是通过UDP方式实现的。
    如果客户端有1000个那么多,Pinging才会有所影响网宽。连接上服务器的客户端信息
    都放在容器(IConnectpointcontainer)里了.研究它会知道当客户连接状态。
    另UDP最好只用来广播不重要的数据,如图像啊。
      

  7.   

    外面有一贴是讲可连接对象的实现的。完成它后就可广播给所有客户端了。
    贴名是:“简单的DCOM实例(公司预研文档)”
      

  8.   

    哎,我们是同病相怜呀,我现在开发的一个项目跟你说的差不多,我也是用一个服务器带多个客户机,通过DCOM通讯,通讯经常出现故障,我现在正在考虑通过COM+实现或改用TCP/IP通讯方式算了。不知道是我们没有掌握DCOM的某些技术细节还是DCOM本身有问题。
      

  9.   

    刚刚看过一些资料,直到COM+在进程间通信上也和DCOM差不多,使用RPC协议,所以我感觉也不是很可靠
      

  10.   

    我想应看它是否有ping类似的机制
    它们好象只有服务器端可用ping,而客户端却不能得到断网的信息