OpenDDS在多台机器上使用IP+PORT方式连接DCPSInfoRepo

IP+PORT方式连接DCPSInfoRepo

在多个发布者和订阅者的情况下,IP+PORT方式发现DCPSInfoRepo具有不用拷贝.ior文件的便利性;因此提倡使用。

问题背景

当我们在局域网的情况下是不能连接到DNS服务器的,所以无法进行FQDN(全称域名解析)。这个时候OpenDDS就会使用发现的短名称,如果短名称也发现失败,那么OpenDDS会从回环地址中解析名字。而我们局域网通信,肯定不能使用回环地址127.0.0.1。

解决办法

  1. OpenDDS使用回环地址实际上是使用hostname进行通信,所以我们需要在本机的hosts文件中添加IP及其对应的名称解析,让OpenDDS优先使用。

    linux: 修改/etc/hosts文件,把自己想要使用的用于OpenDDS通信的局域网网卡IP及其解析后的名字放在文件首行,这样就会被OpenDDS优先使用
    OpenDDS在多台机器上使用IP+PORT方式连接DCPSInfoRepo_第1张图片

    Windows: 修改C:/Windows/system32/drivers/etc/hosts,把自己想要使用的用于OpenDDS通信的局域网网卡IP及其解析后的名字放在文件首行,这样就会被OpenDDS优先使用
    OpenDDS在多台机器上使用IP+PORT方式连接DCPSInfoRepo_第2张图片

  2. 配置 config.ini文件
    OpenDDS在多台机器上使用IP+PORT方式连接DCPSInfoRepo_第3张图片
    设置DCPSInfoRepo的地址,local_address=host:port,这里的host是指想用来做OpenDDS通信的本机IP地址,端口号随意,只要不与其他进程冲突就好。保持.ini后缀一致即可,前面的文件名可以随意修改。

  3. 运行DCPSInfoRepo

DCPSInfoRepo -ORBListenEndpointsiiop://192.168.100.122:12345 -ORBDebugLevel 10
  1. 运行subscriber
./subscriber -DCPSConfigFile config.ini
  1. 运行publisher
./publisher -DCPSConfigFile config.ini

你可能感兴趣的:(OpenDDS)