Com OPC服务器是否有识别客户机的方法

Com OPC服务器是否有识别客户机的方法,com,atl,opc,Com,Atl,Opc,我面临一个问题,需要确定OPCAE客户机之前是否已连接到OPCAE服务器(我正在编写)。我需要这样做的原因是,通过在服务器中缓存报警,确保客户端在断开连接时不会错过任何报警,然后在客户端重新连接时,使用错过的报警进行刷新(如果以前的订阅包含这些报警)。OPC AE规范中没有在断开连接时捕捉报警的要求 在以前版本的OPCAE服务器中,它使客户端的所有订阅句柄都是唯一的,因此客户端a会说使用客户端句柄1-100,客户端2会使用101-200或其他,只有当客户端是自定义的,并且知道允许使用的范围时,这

我面临一个问题,需要确定OPCAE客户机之前是否已连接到OPCAE服务器(我正在编写)。我需要这样做的原因是,通过在服务器中缓存报警,确保客户端在断开连接时不会错过任何报警,然后在客户端重新连接时,使用错过的报警进行刷新(如果以前的订阅包含这些报警)。OPC AE规范中没有在断开连接时捕捉报警的要求

在以前版本的OPCAE服务器中,它使客户端的所有订阅句柄都是唯一的,因此客户端a会说使用客户端句柄1-100,客户端2会使用101-200或其他,只有当客户端是自定义的,并且知道允许使用的范围时,这才有效,与say Matrikon OPC AE explorer连接可能会重用其中一些句柄

有什么标准的方法来处理这个问题吗?关于OPC,有一个名为
SetClientName
的方法的接口
IOPCCommon
,但这似乎是客户机识别自身的一种更为特殊的方式,如果在同一台PC上启动两个OPC客户机,它们将获得相同的名称(至少在Matrikon Explorer中是这样)

客户端还可以通过DCOM远程连接到服务器


IConnectionPoint中是否有某种方法可以识别以前连接过的客户端?

因为客户端句柄不是唯一的,也可能不是唯一的,所以请注意安全,不要触发过去的警报。如果客户机重新连接,它必须在不假定先验知识的情况下进行自我更新。至于重新连接,不可能用
IConnectionPoint
来识别过去的客户端,或者更确切地说,用一个没有实现接口的对象来识别客户端,而不是通过
IUnknown
@PauloMadeira的身份来识别。谢谢你的回复,我怀疑是这样的。依我看,试图解决这个问题可能会导致某种黑客行为。由于客户端句柄不是唯一的,也可能不是唯一的,所以请谨慎行事,不要触发过去的警报。如果客户机重新连接,它必须在不假定先验知识的情况下进行自我更新。至于重新连接,不可能用
IConnectionPoint
来识别过去的客户端,或者更确切地说,用一个没有实现接口的对象来识别客户端,而不是通过
IUnknown
@PauloMadeira的身份来识别。谢谢你的回复,我怀疑是这样的。看来,试图解决这个问题会导致某种黑客行为。