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的主要内容,如果未能解决你的问题,请参考以下文章
无法从使用 Azure SAML SSO 配置的本地应用程序中的 C# 中的 Request.Params 获取 SAML 响应