RTI_DDS使用参与者QoS属性编辑传输TCP

编写了一个简单的示例应用程序 ,演示如何使用TCP v4 LAN传输。 它会根据您在帖子中添加的设置设置参与者。

 

请注意,发布者和订阅者应用程序的参与者共享与我在下面的代码片段中设置的相同的QoS设置。 唯一的区别是发布服务器和订阅服务器应用程序中的dds.transport.TCPv4.tcp1.server_bind_port值不同(即发布服务器应用程序中的7400和订阅服务器应用程序中的7401)。 使用不同端口的原因是能够使用本地主机测试应用程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
char  myport[5] =  "7400"  // Set it to 7401 in the subscriber application
DDSDomainParticipantFactory::get_instance()->get_default_participant_qos(participant_qos);
participant_qos.transport_builtin.mask = DDS_TRANSPORTBUILTIN_MASK_NONE;
DDSPropertyQosPolicyHelper::add_property(participant_qos.property,
                      "dds.transport.load_plugins" ,
                      "dds.transport.TCPv4.tcp1" ,
                      DDS_BOOLEAN_FALSE);
DDSPropertyQosPolicyHelper::add_property(participant_qos.property,
                      "dds.transport.TCPv4.tcp1.library" ,
                      "nddstransporttcp" ,
                      DDS_BOOLEAN_FALSE);
DDSPropertyQosPolicyHelper::add_property(participant_qos.property,
                      "dds.transport.TCPv4.tcp1.create_function" ,
                      "NDDS_Transport_TCPv4_create" ,
                      DDS_BOOLEAN_FALSE);
DDSPropertyQosPolicyHelper::add_property (participant_qos.property,
                       "dds.transport.TCPv4.tcp1.parent.classid" ,
                       "NDDS_TRANSPORT_CLASSID_TCPV4_LAN" ,
                       DDS_BOOLEAN_FALSE);
DDSPropertyQosPolicyHelper::add_property (participant_qos.property,
                       "dds.transport.TCPv4.tcp1.server_bind_port" ,
                       myport,
                       DDS_BOOLEAN_FALSE);

要在任何目录上运行示例unzip tcpv4_lan_example并运行rtiddsgen生成makefile或Visual Studio项目,您需要编译。 请注意,您将看到一些警告消息,因为现有文件不会被rtiddsgen更新的内容替换。


  rtiddsgen -example i86Linux2.6gcc4.4.3 -language C ++ hello_tcp.idl
文件/home/fgarcia/rti/test/tcpv4_lan_example/hello_tcp_subscriber.cxx已存在,不会被更新的内容替换。 如果您想要使用新内容获取新文件,请移除此文件或提供-replace选项。
文件/home/fgarcia/rti/test/tcpv4_lan_example/hello_tcp_publisher.cxx已存在,不会被更新的内容替换。 如果您想要使用新内容获取新文件,请移除此文件或提供-replace选项。
文件/home/fgarcia/rti/test/tcpv4_lan_example/USER_QOS_PROFILES.xml已存在,不会被更新的内容替换。 如果您想要使用新内容获取新文件,请移除此文件或提供-replace选项。
完成
然后,使用Visual Studio或make编译您的应用程序。


  make -f makefile_hello_tcp_i86Linux2.6gcc4.4.3 
在运行应用程序之前,您必须配置一些东西。 首先,如果您使用Windows,则需要将NDDSHOME / lib / <platform_name>目录添加到Path ; 或者LD_LIBRARY_PATH ,如果你使用的是Linux。 将此文件夹添加到您的环境的原因是,我们将参与者配置为在未指定其位置的情况下加载nddstransporttcp.dll (或Linux中的libnddstransporttcp.so )。 例如在Linux上,假设我们已经设置了NDDSHOME并且您正在使用BASH:


 导出LD_LIBRARY_PATH = $ NDDSHOME / ndds.5.0.0 / lib / i86Linux2.6gcc4.4.3:LD_LIBRARY_PATH 
然后,在发布者和订阅者的应用程序环境中设置NDDS_DISCOVERY_PEERS并运行这些应用程序。 在发布方一侧,请记住订阅服务器参与者中的dds.transport.TCPv4.tcp1.server_bind_port为7401,您需要添加该端口以与订阅服务器进行通信。 再假设你正在使用Linux和BASH:


 导出NDDS_DISCOVERY_PEERS = tcpv4_lan:// localhost:7401
 ./objs/i86Linux2.6gcc4.4.3/hello_tcp_publisher 
 =====================
发布商申请
 =====================
 dds.transport.tcp.tcp1.server_bind_port = 7400
打个招呼,算0
打个招呼,算1
打个招呼,算2
打个招呼,算3
打个招呼,算4
打个招呼,算5 
在订户方面,因为发布商运行中的dds.transport.TCPv4.tcp1.server_bind_port为7401:


 导出NDDS_DISCOVERY_PEERS = tcpv4_lan:// localhost:7400
 ./objs/i86Linux2.6gcc4.4.3/hello_tcp_subscriber
 =======================
订户应用程序
 =======================
 dds.transport.tcp.tcp1.server_bind_port = 7401
你好用户睡了4秒...
你好用户睡了4秒...


名称:“姓名”
计数:2
你好用户睡了4秒...


名称:“姓名”
计数:3
你好用户睡了4秒...


名称:“姓名”
计数:4
你好用户睡了4秒...


名称:“姓名”
数量:5 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值