编写了一个简单的示例应用程序 ,演示如何使用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