我有一个DCOM服务器实现了多点事件触发,服务器是运行在单实例下,也就是说只有当第一个客户端连接上的时候才会创建COM对象的一个实例,以后连上来的客户端调用GetActiveObject()API函数判断是否当前已有一个服务器的实例,如果有就调用InterfaceConnect()API函数直接连接上来就行了,如果没有就调用CreateRemoteObject()API函数创建一个服务器的实例。服务器端连接了一个外部设备是通过串口与服务器相连,客户端通过连接DCOM服务器来查询这个外部设备的状态,(由于查询设备状态信息需要的时间较长,所以不能直接用函数的返回值来获得结果,只能用COM事件的方式来异步通知客户端)服务器接到请求后与设备通讯获得状态信息结果然后向发起这个请求的客户端触发COM事件,客户端在事件中接收查询的结果,但由于不是用函数返回的形式来获得结果,所以服务器需要一某种方式唯一区分当前调用服务器端查询设备状态方法的客户端,调用事件实际上是通过调用某个客户端实现的输出接口来实现的,现在的问题是当客户端调用查询方法的时候,如何知道是哪个客户端调用了这个方法,实际上就是在客户端调用此方法的时候,如何获得与这个客户端相对应的输出接口的指针,希望DCOM高手给予解答
解决方案 »
- 高分,问几个简单问题
- 如何给Tflowchart控件添加滑块
- 急等,打印排队,救命啊
- 大家都进来谈谈06年的理想吧!
- 线程中创建XML COM处理对象,为什么老出现错误 ?
- 怎样删除正在运行的程序?
- 有decision cube方面的中英文资料吗?50分求!
- 请教:(socket)服务器端怎么把接收的流形成文件?谢谢!
- 偶的query的sql: select sum(实际结款金额)from 广告纪录表,偶相把sum的结果引入edit1,即edit1.text:=sum求和结果,怎么版?
- 我下载了csdn离线浏览器我想看源文件,但是说需要一个TDBISAMTable组件,请问去那里下载这个组件!
- Dephi中 用TXMLDocument处理XML文件的时候,支持中文吗?
- 如何将ado的数据导出到excel中去!
比如你的事件为IyourEvent.OnMessage;
for i:=0 to Fconnectionpoint.sinklist.count do
begin
IyourEvent(Fconnectionpoint.sinklist[i]).OnMessage;
end;
这个对象的IyourEvent接口即是服务器端的Fconnectionpoint.sinklist[i]