OpenDDS Java开发(一):理解Messenger示例

本文详细介绍了如何在Java中使用OpenDDS进行开发,包括准备环境、创建发送消息的TestPublisher、接收消息的TestSubscriber及DataReaderListenerImpl,以及在IDEA中配置和运行示例的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一.准备

二.发送消息:TestPublisher

三.接收消息:TestSubscriber & DataReaderListenerImpl

四.在IDEA中运行示例


一.准备

首先需要安装好OpenDDS并开启Java支持:Windows下OpenDDS安装

然后在IDEA创建空项目

Java开发OpenDDS需要以下jar包:

其中 messenger_idl_test.jar 是自带示例的包,并不是必需的,这里因为基于示例进行修改,所以还是要引入

引入方法:

File菜单 - Project Structure -Libraries - 点击"+"号 - Java ,然后定位到 %DDS_ROOT%\lib,选中三个jar包,messenger_idl_test.jar同理

注:由于OpenDDS需要CORBA,而Java 9开始移除了CORBA,所以请在Java 8环境下开发,或者引入1.8版本的rt.jar

然后去%DDS_ROOT%\java\tests\messenger下,将publisher和subscriber两个目录下的TestPublisher、TestSubscriber、DataReaderListenerImpl三个java文件复制到IDEA项目的src目录下:

二.发送消息:TestPublisher

        DomainParticipantFactory dpf =
            TheParticipantFactory.WithArgs(new StringSeqHolder(args));
        DomainParticipant dp = dpf.create_participant(4,
            PARTICIPANT_QOS_DEFAULT.get(), null, DEFAULT_STATUS_MASK.value);

第一行用来创建域参与者工厂,需要读取参数(实际上就是读取repo.ior文件)

第二行是创建具体的域参与者,create_participant方法的定义(实际在DomainParticipantFactoryImpl.cpp文件中)为:

DDS::DomainParticipant_ptr
DomainParticipantFactoryImpl::create_participant(
  DDS::DomainId_t domainId,
  const DDS::DomainParticipantQos & qos,
  DDS::DomainParticipantListener_ptr a_listener,
  DDS::StatusMask mask)
{
  DDS::DomainParticipantQos par_qos = qos;

  if (par_qos == PARTICIPANT_QOS_DEFAULT) {
    get_default_participant_qos(par_qos);
  }

  if (!Qos_Helper::valid(par_qos)) {
    ACE_ERROR((LM_ERROR,
               ACE_TEXT("(%P|%t) ERROR: ")
               ACE_TEXT("DomainParticipantFactoryImpl::create_participant, ")
               ACE_TEXT("invalid qos.\n")));
    return DDS::DomainParticipant::_nil();
  }

  if (!Qos_Helper::consistent(par_qos)) {
    ACE_ERROR((LM_
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值