eProsima Fast DDS 是一种高性能的分布式数据服务,支持通过 TCP(包括 TCPv4 和 TCPv6)进行通信。其实现中,TCP 传输具有独立的传输描述符接口,但它们共享许多特性。以下是该传输的一些共同数据成员及其解释:
sendBufferSize (uint32_t, 默认值: 0)
发送缓冲区的大小(以字节为单位)。receiveBufferSize (uint32_t, 默认值: 0)
接收缓冲区的大小(以字节为单位)。netmask_filter (NetmaskFilterKind, 默认值: AUTO)
网络掩码过滤的配置。allowlist (vector
, 默认值: 空向量)
被允许的接口列表以及网络掩码过滤配置。blocklist (vector
, 默认值: 空向量)
被阻止的接口列表。interfaceWhiteList (vector
, 默认值: 空向量)
被允许使用的接口列表。TTL (uint8_t, 默认值: 1)
生存时间,即经过的跃点数。listening_ports (vector
, 默认值: 空向量)
用作服务器监听端口的列表。如果某个端口设置为0,则会自动分配一个可用端口。keep_alive_frequency_ms (uint32_t, 默认值: 5000)
RTCP keep alive 请求频率(以毫秒为单位)。keep_alive_timeout_ms (uint32_t, 默认值: 15000)
在认为连接已损坏之前,发送上次 keep alive 请求后的超时时间(以毫秒为单位)。max_logical_port (uint16_t, 默认值: 100)
在 RTCP 协商过程中尝试的最大逻辑端口数。logical_port_range (uint16_t, 默认值: 20)
每个请求尝试的最大逻辑端口数。logical_port_increment (uint16_t, 默认值: 2)
在 RTCP 协商中尝试逻辑端口之间的增量。enable_tcp_nodelay (bool, 默认值: false)
启用 TCP_NODELAY 套接字选项,以减少延迟。non_blocking_send (bool, 默认值: false)
不在发送操作上阻塞。当设置为 true 时,如果发送缓冲区可能已满,则发送操作会立即返回,但不会向上层报告错误。这意味着应用程序将表现得像是包已被发送但实际丢失了。calculate_crc (bool, 默认值: true)
是否计算并在消息头上发送 CRC 校验和。check_crc (bool, 默认值: true)
是否检查传入消息头中的 CRC 校验和。apply_security (bool, 默认值: false)
是否使用 TLS 安全性配置。tls_config (TLSConfig)
TLS 配置,用于安全通信。default_reception_threads、reception_threads、keep_alive_thread、accept_thread
表示各种线程设置,用于接收线程、保持活动线程和处理进入连接请求线程等配置.tcp_negotiation_timeout(uint32_t,默认:0) 等待逻辑端口协商超时(毫秒)。如果某个逻辑端口正在协商,它将在此超时前等待协商完成,然后再尝试向该端口发送消息。非零设置会增加发现时间,而零则意味着不等待,这可能导致首条消息丢失。
注意事项:
- 尽管
listening_ports
接受多个端口,仅第一个有效监听端口会被使用。 - 如果
listening_ports
留空,参与者将无法接收传入连接,但可以连接到其他配置了监听端口的参与者。 - 当
non_blocking_send
设置为 true 时,发送操作会立即返回,而不是阻塞直到网络缓冲区有空间;这可能导致未能收到确认而导致数据丢失。
内容由零声教学AI助手提供,问题来源于学员提问