代码中的多播地址未在 DDS 代码中设置

Multicast address in code not getting set in DDS code

我的 DDS 程序中有以下代码用于 java 8 使用 RTI DDS 5.2.0

DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.
    discovery.initial_peers.add("239.255.0.50");
DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.
    discovery.initial_peers.add("4@builtin.udpv4://127.0.0.1");
DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.
    discovery.initial_peers.add("builtin.shmem://");
DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.
    discovery.multicast_receive_addresses.clear();
DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.
    discovery.multicast_receive_addresses.add("239.255.0.50");

初始对等点的设置对于 DDS 代码工作正常,但是当我使用该行设置 multicast_receive_addresses 时,地址永远不会被设置并保持默认为默认多播地址。

为什么我的多播地址没有设置?

尝试set_default_participant_qos(DomainParticipantQos qos)方法将修改后的qos设置为新的默认qos。见 RTI Connext Java API

未设置 multicast_recieve_address,因为 DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT 只是一个标记值,其唯一目的是指示 create_participant() 使用默认 QoS -- 您可以使用 set_default_participant_qos or in XML (see also this example).你不应该修改 DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT.

您还可以创建一个新的 DomainParticipantQos 对象,对其进行配置,然后将其传递给 create_participant()。示例 here.