数据分发服务通信故障看这一篇就够了

在这里插入图片描述

通常情况下,如果ping不能在网络上正常工作,那么DDS通信也不能正常工作。

还有其他几个可能的原因会导致DDS不能正常通信:

  • 发现列表

要让两个应用程序进行通信,每个应用程序都需要将对方加入到自己发现的列表中,如果不加入,则会忽略掉对方节点。

  • QoS冲突

要查看发布者和订阅者的QoS设置是否冲突,可以通过给发布者或者订阅者设置回监听器,在监听掩码中设置DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS和DDS_OFFERED_INCOMPATIBLE_QOS_STATUS。如果QoS存在冲突,则会出触发回掉函数。status参数还会告诉你冲突的QoS类别。

  • 防火墙

如果两台机器之间有防火墙,DDS也可能无法通信,因为防火墙不允许DDS所需的UDP端口上的数据包通过防火墙。关闭防火墙或修改配置以允许所需的端口将启用通信。如果需要组播通信,例如在缺省的发现对等体配置中,必须确保正在使用的组播组也由防火墙转发。

  • 网络地址转换(NAT)

如果两台机器之间存在NAT, DDS将无法通信,因为NAT将更改主机IP和端口号。要解决这个问题,请确保需要通过NAT(作为发布者或订阅者)与主机通信的任何机器的地址都可以通过NAT进行路由。如果需要多播通信,例如在默认的发现配置中,您必须确保正在使用的多播组也被路由器转发;即使在这种情况下,一些通信仍然需要可路由单播地址。

  • 未能发现

如果主机A有多个网卡,主机B知道如何将流量路由到某个接口,则应该通过配置传输属性来禁用不可路由的接口。否则,主机A可能会选择一个不可路由的地址进行发现,从而导致两台机器无法通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值