配置文件格式:除了common外,[section type/instance],如[repository/repo_1]
命令行使用配置文件:./publisher -DCPSConfigFile pub.ini
代码级别设置默认配置文件: Service_Participant模块允许DDS客户端应用层代码级别去配置OpenDDS
#include <dds/DCPS/Service_Participant.h>
int main (int argc, char* argv[]){
TheServiceParticipant->default_configuration_file(ACE_TEXT(“pub.ini”));
DDS::DomainParticipantFactory_var dpf = TheParticipantFactoryWithArgs(argc, argv);
[Common Configuration Options]
[common]
Option | Description | Default |
DCPSBit=[1|0] | 切换内置主题支持 | 1 |
DCPSBitLookupDurationMsec=msec | 检索给定实例句柄的BIT数据时,框架将等待潜在的内置主题信息的最大持续时间(以毫秒为单位)。 参与者代码可以在框架接收并处理相关的BIT信息之前获取远程实体的实例句柄。 框架会在操作失败之前等待多长给定的时间。 | 2000 |
DCPSBitTransportIPAddress=addr | 用于标识tcp传输内置主题的本地接口的IP地址。 注意:此属性仅适用于DCPSInfoRepo configuration | INADDR_ANY |
DCPSBitTransportPort=port | 用于标识tcp传输内置主题的端口。如果使用默认值“ 0”,则操作系统来选择要使用的端口。 注意:此属性仅适用于DCPSInfoRepo configuration。 | 0 |
DCPSChunks=n | 当RESOURCE_LIMITS QoS值是无穷大时,数据写入者和读取者的缓存分配器将预分配的块的可配置数量。 当所有预分配的块都在使用时,OpenDDS从堆中进行分配。 | 20 |
DCPSChunkAssociationMultiplier=n | 与DCPSChunks或resource_limits.max_samples相乘的值,以确定已预先分配的浅拷贝块的总数。 将此值设置为大于连接数的值,以使预分配的块句柄不会用完。 写入多个数据读取器的样本不会被多次复制,但是该样本有一个浅表复制句柄,用于管理向每个数据读取器的交付。 句柄的大小很小,因此不需要将此值设置为接近连接数。 | 10 |
DCPSDebugLevel=n | 控制DCPS层打印的调试信息量的整数值。 有效值为0到10。 •0-表示严重错误的日志,未指示在返回code中(几乎没有)。 •1-每个进程应该发生一次或警告的日志 •2-每个DDS实体应该发生一次的日志 •4-与管理界面相关的日志 •6-每N个样本写入/读取应发生的日志 •8-每个样本写入/读取应发生一次的日志 •10-每次样本写入/读取可能发生多次的日志 | 0 |
DCPSDefaultAddress=addr | 包含local_address的传输实例的local_address主机部分的默认值。 仅在将DCPSDefaultAddress设置为非空值并且在传输中未指定local_address时应用。其他子系统(例如DDSI-RTPS Discovery)也将DCPSDefaultAddress用作默认值。 |
|
DCPSDefaultDiscovery=[ DEFAULT_REPO| DEFAULT_RTPS| DEFAULT_STATIC| user-defined configuration instance name] | 指定用于未明确配置的任何域的发现配置。 DEFAULT_REPO转换为使用DCPSInfoRepo。 DEFAULT_RTPS指定使用RTPS进行发现。 DEFAULT_STATIC指定使用静态发现。 | DEFAULT_REPO |
DCPSGlobalTransportConfig=name | 指定应该用作全局配置的传输配置的名称。 所有未指定传输配置的实体都使用此配置。 $ file的特殊值使用的传输配置包括配置文件中定义的所有传输实例 | ?? |
DCPSInfoRepo=objref | 用于查找DCPS信息存储库的对象引用。 这可以是完整的CORBA IOR,也可以是简单的host:port字符串。 | file://repo.ior |
DCPSLivelinessFactor=n | 活动性租用期限的百分比,在此百分比之后发送活动性消息。 值80表示从最后检测到的心跳消息开始之后延迟减少了20%。 | 80 |
DCPSMonitor=[0|1] | 使用OpenDDS_monitor库发布有关监视主题的数据 | 0 |
DCPSPendingTimeout=sec | 数据写入器将阻塞的最大持续时间(以秒为单位),以允许删除未发送的样本。 默认情况下,此选项会无限期阻止。 | 0 |
DCPSPersistentDataDir=path | 文件系统上将存储持久数据的路径。 如果该目录不存在,它将自动创建。 | OpenDDS-durable-data-dir |
DCPSPublisherContentFilter=[1|0] | 控制内容过滤主题的过滤器表达式评估策略。 启用(1)后,如果所有订阅者都将忽略这些样本,则发布者可以将样本移交给传输之前丢弃任何样本。 | 1 |
DCPSSecurity=[0|1] | 仅在启用DDS安全性的情况下编译OpenDDS时,此设置才可用。 如果设置为1,则启用DDS Securityframework和内置插件。 必须使用特定的QoS策略值来创建使用安全性的每个域参与者。 | 0 |
DCPSSecurityDebug=CAT[,CAT...] | 仅在启用DDS安全性的情况下编译OpenDDS时,此设置才可用。 这将按类别控制安全调试日志记录的粒度。 | 0 |
DCPSSecurityDebugLevel=n | 仅在启用DDS安全性的情况下编译OpenDDS时,此设置才可用。 这将按调试级别控制安全性调试日志记录的粒度。 | N/A |
DCPSSecurityFakeEncryption=[0|1] | 仅在启用DDS安全性的情况下编译OpenDDS时,此设置才可用。 设置为1时,此选项禁用所有加密(加密和解密的操作)。 OpenDDS仍会生成密钥并执行其他安全性簿记,因此该选项通过调试手动检查所有消息,对调试安全性基础结构很有用。 | 0 |
pool_size=n_bytes | 安全配置文件存储池的大小,以字节为单位。 | 41943040 (40 MiB) |
pool_granularity=n_bytes | 安全配置文件存储池的粒度(以字节为单位)。 必须是8的倍数。 | 8 |
Scheduler=[ SCHED_RR| SCHED_FIFO| SCHED_OTHER] | 选择要使用的线程调度器。 在大多数系统上,将调度程序设置为默认值以外的值需要特权。 可以设置SCHED_RR,SCHED_FIFO或SCHED_OTHER的值。 SCHED_OTHER是大多数系统上的默认调度程序。 | SCHED_OTHER |
scheduler_slice=usec | 选择默认调度程序以外的某些调度程序时,某些操作系统(例如SunOS)需要设置时间片值。 对于那些系统,此选项可用于以微秒为单位设置值。 | None |
DCPSBidirGIOP=[0|1] | 使用TAO的双向GIOP功能与DCPSInfoRepo进行交互。 启用BiDir后,可以使用较少的套接字,因为相同的套接字可用于客户端和服务器角色。 | 1 |
DCPSThreadStatusInterval=sec | 使用指定的报告间隔(以秒为单位)对内部线程状态进行报告。 | 0 (disabled) |
[Discovery Configuration]
[Domain Configuration]
[domain/*]
Option | Description | Default |
DomainId=n | 表示与存储库关联的域的整数值。 |
|
DomainRepoKey=k | 映射的存储库的键值(不推荐使用。为向后兼容而提供)。 |
|
DiscoveryConfig=config instance name | 用户定义的字符串,它引用同一配置文件中[repository]或[rtps_discovery]节的实例名称或内部默认值之一(DEFAULT_REPO,DEFAULT_RTPS或DEFAULT_STATIC)。 |
|
DefaultTransportConfig=config | 用户定义的字符串,它引用[config]节的实例名称 |
|
[Multiple repository configuration sections]
[repository/*]
Option | Description | Default |
RepositoryIor=ior | 存储库IOR或host:port。 |
|
RepositoryKey=key | 存储库的唯一键值。 (不推荐使用。为向后兼容而提供) |
|
[RTPS Discovery Configuration Options]
[rtps_discovery/*]
Option | Description | Default |
ResendPeriod=sec | 参与者公告之间进程等待的秒数 | 30 |
MinResendDelay | 参与者公告之间的最短时间(以毫秒为单位)。 | 100 |
QuickResendRatio | 配置本地SDPD重发的调整参数(重发周期的比率) | 0.1 |
LeaseDuration=sec | 作为参与者发送公告的一部分。 它告诉对等参与者,如果他们在指定的持续时间内没有收到该参与者的消息,则可以认为该参与者“没有生命”。 | 300 |
PB=port | 端口基本号。 此数字设置派生用于简单端点发现协议(SEDP)的端口号的起点。 此属性与DG,PG,D0(或DX)和D1结合使用,以构造用于RTPS发现通信的必要端点。 | 7400 |
DG=n | 表示域增益的整数值。 这是一个乘法器,有助于为RTPS制定多播或单播端口。 | 250 |
PG=n | 一个整数,它有助于配置SPDP 单播端口并用作偏移乘数,因为使用以下公式为参与者分配了地址: PB + DG * domainId + d1 + PG * particatorId | 2 |
D0=n | 一个整数值,有助于在SPDP Multicast配置中提供用于计算可分配端口的偏移量。 使用的公式为: PB + DG * domainId + d0 | 0 |
D1=n | 一个整数值,有助于在SPDP Unicast配置中提供用于计算可分配端口的偏移量。 使用的公式为: PB + DG * domainId + d1 + PG *particatorId | 10 |
SedpMaxMessageSize | 设置最大SEDP消息大小。 默认值为最大UDP消息大小。 | 65466 |
SedpMulticast=[0|1] | 一个布尔值(0或1),用于确定是否将多播用于SEDP通信。 设置为1时,使用多播。 设置为零(0)时,使用SEDP的单播 | 1 |
SedpLocalAddress=addr:port | 配置传输实例的创建以及通过SEDP绑定到指定的本地地址和端口。 为了保留未指定的端口,可以从设置中将其省略,但必须在末尾加上:。 | System default address |
SpdpLocalAddress=addr[:port] | 本地接口的地址,SPDP将使用该地址绑定到该特定接口。 | DCPSDefaultAddress, or IPADDR_ANY |
DX=n | 一个整数值,有助于在SEDP组播配置中提供用于计算端口的偏移量。 使用的公式为: PB + DG * domainId + dx 仅当SedpMulticast = 1时有效。 | 2 |
SpdpSendAddrs= [host:port],[host:port]... | host:port对的列表(用逗号或空格分隔),用作SPDP内容的目标。 这可以是单播和多播地址的组合。 |
|
MaxSpdpSequenceMsgResetChecks=n | 超过了此数量的SPDP消息的序列号之后,删除发现的参与者。 | 3 |
PeriodicDirectedSpdp=[0|1] | 一个布尔值,它确定是否在每个重发周期将定向的SPDP消息发送给所有参与者。 应该为不能使用多播发送SPDP公告的参与者(例如RtpsRelay)启用此设置。 | 0 |
UndirectedSpdp=[0|1] | 一个布尔值,它确定是否发送无向SPDP消息。 对于无法使用多播发送SPDP通知的参与者(例如RtpsRelay),应禁用此设置。 | 1 |
InteropMulticastOverride=group_address | 指定要用于SPDP发现的多播组的网络地址。 这将覆盖规范的互操作性组。 例如,它可用于指定路由组地址的使用以提供更大的发现范围。 | 239.255.0.1 |
TTL=n | 作为发现的一部分发送的多播数据报的生存时间(TTL)字段的值。 此值指定数据报在被网络丢弃之前将经过的跃点数。 默认值1表示所有数据都限于本地网络子网。 | 1 |
MulticastInterface=iface | 指定此发现实例要使用的网络接口。 这使用特定于平台的格式来标识网络接口。 在Linux系统上,这将类似于eth0。如果未配置此值,则使用通用配置值DCPSDefaultAddress来设置多播接口 | The system default interface is used |
GuidInterface=iface | 确定哪个本地MAC地址应出现在由此节点生成的GUID中时要使用的网络接口。 | The system / ACE library default is used |
SpdpRtpsRelayAddress=host:port | 指定用于SPDP消息的RtpsRelay的地址。 |
|
SpdpRtpsRelaySendPeriod=period | 指定发送到RtpsRelay的SPDP公告之间的间隔。 | 30 s |
SedpRtpsRelayAddress=host:port | 指定用于SEDP消息的RtpsRelay的地址。 |
|
RtpsRelayOnly=[0|1] | 仅将RTPS消息发送到RtpsRelay(用于调试)。 | 0 |
UseRtpsRelay=[0|1] | 将消息发送到RtpsRelay。 仅当设置了SpdpRtpsRelayAddress和/或SedpRtpsRelayAddress时,才会发送消息。 | 0 |
SpdpStunServerAddress=host:port | SPDP使用ICE时,指定STUN服务器的地址。 |
|
SedpStunServerAddress=host:port | SEDP使用ICE时,指定STUN服务器的地址。 |
|
UseIce=[0|1] | 为SPDP和SEDP启用或禁用ICE。 | 0 |
IceTa=milliseconds | ICE发送之间的最小间隔。 | 50 ms |
IceConnectivityCheckTTL=seconds | 连接检查的最大持续时间。 | 300 s |
IceChecklistPeriod=seconds | 尝试在此时间内循环进行候选人的所有连接检查。 | 10 |
IceIndicationPeriod=seconds | 通过此周期向对等体发送STUN指示以维护NAT绑定。 | 15 |
IceNominatedTTL=seconds | 如果在此时间内未收到指示,请忽视有效的候选人。 | 300 |
IceServerReflexiveAddressPeriod=seconds | 通过此周期将消息发送到STUN服务器。 | 30 |
IceServerReflexiveIndicationCount=integer | 在向STUN服务器发送新的绑定请求之前,发送一些指示。 | 10 |
IceDeferredTriggeredCheckTTL=seconds | 在这段时间后,清除延迟的检查。 | 300 s |
IceChangePasswordPeriod=seconds | 在这段时间后,更改ICE密码。 | 300 s |
MaxAuthTime=seconds | 设置使用DDS安全性进行身份验证的最长时间。 | 300 s |
AuthResendPeriod=seconds | 在这段时间后重新发送身份验证消息。 | 1 s |
SecureParticipantUserData=[0|1] | 如果启用了DDS安全性,则从不安全的发现消息中将省略参与者的USER_DATA QoS。 | 0 |
UseXTypes=[0|1] | 启用XTypes规范中的发现扩展。 参与者使用类型查找服务交换端点公告中的顶级类型信息和扩展类型信息。 | 1 |
TypeLookupServiceReplyTimeout=milliseconds | 如果将请求发送到对等方的“类型查找服务”(请参见上面的UseXTypes),请在此期间内等待答复。 | 5 seconds |
[Configuring For Static Discovery] *当前静态发现只能使用rtps_udp传输
[topic/*] Configuration Options
Option | Description | Default |
name=string | topic的名称 | Instance nameof section |
type_name=string | 唯一定义样本类型的标识符。 这通常是CORBA接口存储库类型名称。 | Required |
[datawriterqos/*] Configuration Options
Option | Description | Default |
durability.kind=[ VOLATILE|TRANSIENT_LOCAL] |
|
|
deadline.period.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
deadline.period.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
latency_budget.duration.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
latency_budget.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
liveliness.kind=[ AUTOMATIC| MANUAL_BY_TOPIC| MANUAL_BY_PARTICIPANT] |
|
|
liveliness.lease_duration.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
liveliness.lease_duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
reliability.kind=[ BEST_EFFORT|RELIABILE] |
|
|
reliability.max_blocking_time.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
reliability.max_blocking_time.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
destination_order.kind=[ BY_SOURCE_TIMESTAMP| BY_RECEPTION_TIMESTAMP] |
|
|
history.kind=[KEEP_LAST|KEEP_ALL] |
|
|
history.depth=numeric |
|
|
resource_limits.max_samples=numeric |
|
|
resource_limits.max_instances=numeric |
|
|
resource_limits.max_samples_per_instance= numeric |
|
|
transport_priority.value=numeric |
|
|
lifespan.duration.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
lifespan.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
ownership.kind=[SHARED|EXCLUSIVE] |
|
|
ownership_strength.value=numeric |
|
|
[datareaderqos/*] Configuration Options
Option | Description | Default |
durability.kind=[ VOLATILE|TRANSIENT_LOCAL] |
|
|
deadline.period.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
deadline.period.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
latency_budget.duration.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
latency_budget.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
liveliness.kind=[ AUTOMATIC| MANUAL_BY_TOPIC| MANUAL_BY_PARTICIPANT] |
|
|
liveliness.lease_duration.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
liveliness.lease_duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
reliability.kind=[ BEST_EFFORT|RELIABILE] |
|
|
reliability.max_blocking_time.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
reliability.max_blocking_time.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
destination_order.kind=[ BY_SOURCE_TIMESTAMP| BY_RECEPTION_TIMESTAMP] |
|
|
history.kind=[KEEP_LAST|KEEP_ALL] |
|
|
history.depth=numeric |
|
|
resource_limits.max_samples=numeric |
|
|
resource_limits.max_instances=numeric |
|
|
resource_limits.max_samples_per_instance= numeric |
|
|
time_based_filter.minimum_separation.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
time_based_filter.minimum_separation.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
reader_data_lifecycle.autopurge_nowriter_samples_delay.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
reader_data_lifecycle.autopurge_nowriter_samples_delay.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
reader_data_lifecycle.autopurge_dispose_samples_delay.sec=[ numeric|DURATION_INFINITE_SEC] |
|
|
reader_data_lifecycle.autopurge_dispose_samples_delay.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] |
|
|
[publisherqos/*] Configuration Options
Option | Description | Default |
presentation.access_scope=[ INSTANCE|TOPIC|GROUP] |
|
|
presentation.coherent_access=[ true|false] |
|
|
presentation.ordered_access=[ true|false] |
|
|
partition.name=name0,name1,... |
|
|
[subscriberqos/*] Configuration Options
Option | Description | Default |
presentation.access_scope=[ INSTANCE|TOPIC|GROUP] |
|
|
presentation.coherent_access=[ true|false] |
|
|
presentation.ordered_access=[ true|false] |
|
|
partition.name=name0,name1,... |
|
|
[endpoint/*] Configuration Options
Option | Description | Default |
domain=numeric | 端点的域ID,范围为0-231。 用于形成端点的GUID。 | Required |
participant=hexstring | 12个十六进制数字的字符串。 用于形成端点的GUID。 具有相同域/参与者组合的所有端点应处于同一进程中。 | Required |
entity=hexstring | 6个十六进制数字的字符串。 用于形成端点的GUID。 域/参与者/实体的组合应该是唯一的。 | Required |
type=[reader|writer] | 确定实体是数据读取器还是数据写入器。 | Required |
topic=name | Refers to a [topic/*] section. | Required |
datawriterqos=name | Refers to a [datawriterqos/*] section. |
|
datareaderqos=name | Refers to a [datareaderqos/*] section. |
|
publisherqos=name | Refers to a [publisherqos/*] section. |
|
subscriberqos=name | Refers to a [subscriberqos/*] section. |
|
config | Refers to a [config / *]节中的传输配置。 这用于确定端点的网络地址。 |
|
[Transport Configuration]
[Transport Configuration Options]
[transport/*]
Option | Description | Default |
Transports=inst1[,inst2][,...] | 此配置将使用的传输实例名称的有序列表。 每个传输配置都需要此字段。 | none |
swap_bytes=[0|1] | 值为0会使DDS以源计算机的本机字节序对数据进行序列化; 值为1会使DDS以相反的字节序对数据进行序列化。 接收方将调整数据的字节序,因此无需在机器之间匹配此选项。 此选项的目的是允许开发人员确定在必要时进行哪一方进行字节顺序调整。 | 0 |
passive_connect_duration=msec | 初始被动连接建立的超时(毫秒)。 默认情况下,此选项等待十秒钟。 零值将无限期等待(不建议)。 | 10000 |
[Common Transport Configuration Options]
Option | Description | Default |
transport_type=transport | 传输类型; 可以通过传输框架以编程方式扩展可用传输的列表。 tcp,udp,multicast,shmem和rtps_udp包含在OpenDDS中。 | none |
queue_messages_per_pool=n | 当检测到backpressure时,消息发送将要排队。 当消息队列必须增长时,它将以该数字增长。 | 10 |
queue_initial_pools=n | backpressure队列的初始池数。 两个backpressure队列值的默认设置为50个消息(5个10个消息的池)预分配了空间。 | 5 |
max_packet_size=n | 传输数据包的最大大小,包括其传输标头,样本标头和样本数据。 | 2147481599 |
max_samples_per_packet=n | 传输数据包中的最大样本数。 | 10 |
optimum_packet_size=n | 即使仍然有排队的样本要发送,大于此大小的传输数据包也会通过电缆发送。 该值可能会影响性能,具体取决于您的网络配置和应用程序性质。 | 4096 (4 KiB) |
thread_per_connection= [0|1] | 启用或禁用每个连接发送策略的线程。 默认情况下,此选项处于禁用状态。 | 0 |
datalink_release_delay=msec | datalink_release_delay是没有关联后数据链路释放的延迟(以毫秒为单位)。 增加此值可能会减少在频繁添加和删除读取器/写入器关联时重新建立的开销。 | 10000 |
[TCP/IP Configuration Options]
Option | Description | Default |
active_conn_timeout_period=msec | 活动连接侧等待建立连接的时间段(毫秒)。 如果在此期间未连接,则将调用on_publication_lost()回调。 | 5000 |
conn_retry_attempts=n | 丢弃并调用on_publication_lost()和on_subscription_lost()回调之前的重新连接尝试次数。 | 3 |
conn_retry_initial_delay=msec | 尝试重新连接的初始延迟(毫秒)。 假设检测到丢失的连接,则尝试重新连接。 如果此重新连接失败,则在此指定的延迟后进行第二次尝试。 | 500 |
conn_retry_backoff_multiplier=n | 重新连接尝试的退避乘数。 在上述初始延迟之后,后续延迟由该乘数与先前延迟的乘积确定。 例如,如果conn_retry_initial_delay为500,conn_retry_backoff_multiplier为1.5,则第二次重新连接尝试将在第一次重试连接失败后的0.5秒内进行; 第三次尝试将在第二次重试连接失败后的0.75秒内进行; 第三次尝试将在第三次重试连接失败后的1.125秒内进行。 | 2.0 |
enable_nagle_algorithm=[0|1] | 启用或禁用Nagle的算法。 默认情况下,它是禁用的。 启用Nagle的算法可能会增加吞吐量,但会增加延迟。 | 0 |
local_address=host:port | 连接接受器的主机名和端口。 默认值为FQDN和端口0,这意味着操作系统将选择该端口。 如果仅指定了主机,但省略了端口号,则主机说明符上仍需要“:”。 | fqdn:0 |
max_output_pause_period=msec | 排队中消息无法发送时的最长时间(毫秒)。 如果有样本在排队没有输出,并超过此时间段,则连接将关闭,并且将调用on_*_lost()回调。 默认值为零表示不进行此检查。 | 0 |
passive_reconnect_duration=msec | 被动连接端等待连接重新连接的时间段(毫秒)。 如果在这段时间内未重新连接,则将调用on _ * _ lost()回调。 | 2000 |
pub_address=host:port | 用配置的字符串覆盖发送给对等方的地址。 这可用于防火墙穿越和其他高级网络配置。 |
|
[UDP/IP Configuration Options]
Option | Description | Default |
local_address=host:port | 侦听套接字的主机名和端口。 默认为基础操作系统选择的值。 该端口可以省略,在这种情况下,该值应以“:”结尾。 | fqdn:0 |
send_buffer_size=n | 用于UDP有效负载的总发送缓冲区大小(以字节为单位)。 | Platform value of ACE_DEFAULT_MAX_SOCKET_BUFSIZ |
rcv_buffer_size=n | 用于UDP有效负载的总接收缓冲区大小(以字节为单位)。 | Platform value of ACE_DEFAULT_MAX_SOCKET_BUFSIZ |
[IP Multicast Configuration Options]
Option | Description | Default |
default_to_ipv6=[0|1] | 启用IPv6默认组地址选择。 默认情况下,此选项处于禁用状态。 | 0 |
group_address=host:port | 要加入以发送/接收数据的多播组。 | 224.0.0.128:<port>,[FF01::80]:<port> |
local_address=address | 如果为非空,则为用于加入多播组的本地网络接口的地址。 |
|
nak_delay_intervals=n | 初始nak之后nak之间的间隔数。 | 4 |
nak_depth=n | 为了service repair requests而保留的数据报数(仅可靠)。 | 32 |
nak_interval=msec | 两次修复请求之间等待的最小毫秒数(仅可靠)。 | 500 |
nak_max=n | The maximum number of times a missing sample will be nak'ed. | 3 |
nak_timeout=msec | 放弃维修响应之前要等待的最大毫秒数(仅可靠)。 | 30000 |
port_offset=n | 未指定组地址时用于设置端口号。 指定组地址后,将使用其中的端口号。 如果未指定组地址,则将端口偏移量用作端口号。 此值不应设置为小于49152。 | 49152 |
rcv_buffer_size=n | 套接字接收缓冲区的大小(以字节为单位)。 零值表示使用系统默认值。 | 0 |
reliable=[0|1] | 使能可靠的通信 | 1 |
syn_backoff=n | 握手重试期间使用的指数基; 较小的值会缩短尝试之间的延迟。 | 2.0 |
syn_interval=msec | 关联期间,等待握手尝试的最小毫秒数。 | 250 |
syn_timeout=msec | 关联期间,放弃握手响应之前要等待的最大毫秒数。 | 30000 |
ttl=n | 发送的任何数据报的生存时间(ttl)字段的值。 默认值为1表示所有数据都限于本地网络。 | 1 |
async_send=[0|1] | 使用异步I / O(在有效支持它的平台上)发送数据报。 |
|
[RTPS_UDP Configuration Options]
Option | Description | Default |
use_multicast=[0|1] | rtps_udp传输可以使用单播或多播。 设置为0(false)时,传输将使用单播,否则,值1(true)将使用多播。 | 1 |
multicast_group_address=network address | 将传输设置为多播时,这是应使用的多播网络地址。 如果未为网络地址指定端口,则将使用端口7401。 | 239.255.0.2:7401 |
multicast_interface=iface | 指定此传输实例要使用的网络接口。 这使用特定于平台的格式来标识网络接口。 在Linux系统上,这类似于eth0。如果未配置此值,则使用公共配置值DCPSDefaultAddress来设置多播接口。 | The system defaultinterface is used |
local_address=addr:port | 将套接字绑定到给定的地址和端口。 可以省略端口,但必须在末尾加上“:”。 | System default |
nak_depth=n | 为了service repair requests而保留的数据报数(仅可靠)。 | 32 |
nak_response_delay=msec | 协议调整参数,允许RTPS Writer针对数据请求延迟否定确认的响应(以毫秒为单位)。 | 200 |
heartbeat_period=msec | 协议调整参数,以毫秒为单位指定RTPS Writer 公告数据可用性的频率。 | 1000 |
heartbeat_response_delay=msec | 协议调整参数(以毫秒为单位),允许RTPS Reader延迟发送肯定或否定确认。 此参数用于减少网络风暴的发生。 | 500 |
handshake_timeout=msec | 关联期间放弃握手响应之前要等待的最大毫秒数。 | 30000 |
max_message_size | 最大消息大小。 默认值为最大UDP消息大小。 | 65466 |
quick_reply_ratio | 调整参数,用于控制相对于heartbeat_ period和heartbeat_response_delay的新公告发生速度。 | 0.1 |
ttl=n | 发送的任何多播数据报的生存时间(ttl)字段的值。 此值指定数据报在被网络丢弃之前将经过的跃点数。 默认值1表示所有数据都限于本地网络子网。 | 1 |
DataRtpsRelayAddress=host:port | 指定用于RTPS消息的RtpsRelay的地址。 |
|
RtpsRelayOnly=[0|1] | 仅将RTPS消息发送到RtpsRelay(用于调试)。 | 0 |
UseRtpsRelay=[0|1] | 将消息发送到RtpsRelay。 仅当设置了DataRtpsRelayAddress时,才会发送消息。 | 0 |
DataStunServerAddress=host:port | 指定使用ICE时,用于RTPS的STUN服务器的地址。 |
|
UseIce=[0|1] | 为此传输实例启用或禁用ICE。 | 0 |
[Shared-Memory Transport Configuration Options]
Option | Description | Default |
pool_size=bytes | 分配的单个共享内存池的大小。 | 16777216 (16MiB) |
datalink_control_size=bytes | 为每个数据链路分配的控制区域的大小。 此分配来自pool_size定义的共享内存池 | 4096 (4 KiB) |
静态配置示例:
配置文件:
[topic/MyTopic]
type_name=TestMsg::TestMsg
[endpoint/MyReader]
type=reader
topic=MyTopic
config=MyConfig
domain=34
participant=0123456789ab
entity=cdef01
[config/MyConfig]
transports=MyTransport
[transport/MyTransport]
transport_type=rtps_udp
use_multicast=0
local_address=1.2.3.4:30000
代码:
DDS::DomainParticipantQos dp_qos;
domainParticipantFactory->get_default_participant_qos(dp_qos);
dp_qos.user_data.value.length(6);
dp_qos.user_data.value[0] = 0x01;
dp_qos.user_data.value[1] = 0x23;
dp_qos.user_data.value[2] = 0x45;
dp_qos.user_data.value[3] = 0x67;
dp_qos.user_data.value[4] = 0x89;
dp_qos.user_data.value[5] = 0xab;
DDS::DataReaderQos qos;
subscriber->get_default_datareader_qos(qos);
qos.user_data.value.length(3);
qos.user_data.value[0] = 0xcd;
qos.user_data.value[1] = 0xef;
qos.user_data.value[2] = 0x01;