我正面临一个问题,我需要确定OPCAE客户端之前是否已连接到OPCAE服务器(我正在编写)。我需要这个的原因是为了确保客户端在通过缓存服务器中的警报而断开连接时不会错过任何警报,然后在客户端重新连接时,使用错过的警报执行刷新(如果之前的订阅包括那些报警)。 OPC AE规范中没有要求在断开连接时捕获警报。
在以前版本的OPCAE服务器中,它使所有订阅句柄对于客户端都是唯一的,因此客户端A会说使用客户端句柄1-100而客户端2会使用101-200或者其他东西,这仅在客户端是知道允许使用的范围的自定义人员,与Matrikon OPC AE资源管理器连接可能会重复使用其中一些句柄。
有没有一些标准的方法来处理这个?当关于OPC时,接口IOPCCommon
有一个名为SetClientName
的方法,但如果你在同一个上启动两个OPC客户端,这似乎是客户端识别自身的一种特殊方式PC将获得相同的名称(至少在Matrikon Explorer中看起来如此)。
客户端还可以通过DCOM远程连接到服务器。
IConnectionPoint中是否有某种方法可以识别先前连接的客户端?