Opensplice - 从本地参与者获取 C# 中的 nodeId

Posted

技术标签:

【中文标题】Opensplice - 从本地参与者获取 C# 中的 nodeId【英文标题】:Opensplice - Getting the nodeId in C# from a local participant 【发布时间】:2021-06-21 12:52:54 【问题描述】:

我正在使用 DCPSParticipant 内置主题来检索有关域中参与者的信息(我正在使用 C#)。

在example 中,接收到的样本包含可以通过以下方式访问的节点标识:

int nodeId = data[i].Key[0];

现在,我想从本地创建的参与者那里获得相同的 ID。目标是将本地参与者与 ParticipantBuiltInTopicData 关联起来。

在 RTI 中,我们可以通过其实例句柄获取参与者的 GUID(参见 this post),但是我无法在 C# 中复制它。

如何从本地参与者那里获取 nodeID?

或者,我可以获取本地参与者的 GUID 吗?

【问题讨论】:

【参考方案1】:

我找到了一种方法,虽然看起来有点奇怪。

创建本地参与者后,我使用本地参与者 instanceHandle 调用 GetDiscoveredParticipantData。

IDomainParticipant participant = DomainParticipantFactory.Instance.CreateParticipant(DomainId.Default);
InstanceHandle handle = participant.InstanceHandle;
ParticipantBuiltinTopicData selfData = new ParticipantBuiltinTopicData();

participant.GetDiscoveredParticipantData(ref selfData, handle);
Console.WriteLine(selfData.Key[0]); // Node id

【讨论】:

以上是关于Opensplice - 从本地参与者获取 C# 中的 nodeId的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致 OpenSplice 中出现此 Java 错误?

C# 从环境中获取本地化路径

从 C# 中的 IP 获取本地网络上的机器 MAC 地址

从服务器获取当前日期时间并将其转换为 c# 中的本地时间

无法从使用 Azure SAML SSO 配置的本地应用程序中的 C# 中的 Request.Params 获取 SAML 响应

为 OpenSplice 模板创建容器?