名称
zmq_getsockopt - 获取 0MQ 套接字选项
概要
int zmq_getsockopt (void '*socket', int 'option_name', void '*option_value', size_t '*option_len');
描述
zmq_getsockopt() 函数将检索由 'option_name' 参数指定的选项的值,该选项作用于 'socket' 参数指向的 0MQ 套接字,并将其存储到 'option_value' 参数指向的缓冲区中。'option_len' 参数是 'option_value' 指向的缓冲区的大小(字节);成功完成后,zmq_getsockopt() 将修改 'option_len' 参数以指示存储在缓冲区中的选项值的实际大小。
可以使用 zmq_getsockopt() 函数检索以下选项:
ZMQ_AFFINITY: 检索 I/O 线程亲和性
'ZMQ_AFFINITY' 选项将检索指定 'socket' 上新建连接的 I/O 线程亲和性。
亲和性决定了套接字的 context 相关联的 0MQ I/O 线程池中的哪些线程将处理新建连接。值为零表示没有亲和性,意味着工作将在线程池中的所有 0MQ I/O 线程之间公平分配。对于非零值,最低位对应于线程 1,次低位对应于线程 2,依此类推。例如,值为 3 指定 'socket' 上的后续连接将由 I/O 线程 1 和 2 专门处理。
另请参阅 zmq_init 以获取关于为特定 context 分配 I/O 线程数量的详细信息。
选项值类型 |
uint64_t |
选项值单位 |
不适用(位图) |
默认值 |
0 |
适用套接字类型 |
不适用 |
ZMQ_BACKLOG: 检索未完成连接队列的最大长度
'ZMQ_BACKLOG' 选项将检索指定 'socket' 的未完成对等端连接队列的最大长度;这仅适用于面向连接的传输。详细信息请参考您的操作系统关于 'listen' 函数的文档。
选项值类型 |
int |
选项值单位 |
连接数 |
默认值 |
100 |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_BINDTODEVICE: 检索套接字绑定的设备名称
'ZMQ_BINDTODEVICE' 选项检索此套接字绑定的设备名称,例如接口或 VRF。如果套接字绑定到某个接口,则套接字只处理从该接口接收到的数据包。如果设备是 VRF 设备,则后续绑定/连接到该套接字将使用 VRF 路由表中的地址。
选项值类型 |
字符串 |
选项值单位 |
不适用 |
默认值 |
未设置 |
适用套接字类型 |
所有,使用 TCP 或 UDP 传输时。 |
ZMQ_CONNECT_TIMEOUT: 检索 connect() 超时
检索 connect() 系统调用超时前等待的时间。connect() 系统调用通常需要很长时间才会返回超时错误。设置此选项允许库在更短的时间间隔内使调用超时。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
0(禁用) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_CURVE_PUBLICKEY: 检索当前 CURVE 公钥
检索套接字的当前长期公钥。您可以提供 32 字节的缓冲区来检索二进制密钥值,或者提供 41 字节的缓冲区来检索可打印的 Z85 格式密钥。注意:要获取可打印的密钥,缓冲区必须有 41 字节大小,以容纳 40 个字符的密钥值和一个 null 字节。
选项值类型 |
二进制数据或 Z85 字符串 |
选项值大小 |
32 或 41 |
默认值 |
空 |
适用套接字类型 |
所有,使用 TCP 传输时 |
ZMQ_CURVE_SECRETKEY: 检索当前 CURVE 私钥
检索套接字的当前长期私钥。您可以提供 32 字节的缓冲区来检索二进制密钥值,或者提供 41 字节的缓冲区来检索可打印的 Z85 格式密钥。注意:要获取可打印的密钥,缓冲区必须有 41 字节大小,以容纳 40 个字符的密钥值和一个 null 字节。
选项值类型 |
二进制数据或 Z85 字符串 |
选项值大小 |
32 或 41 |
默认值 |
空 |
适用套接字类型 |
所有,使用 TCP 传输时 |
ZMQ_CURVE_SERVERKEY: 检索当前 CURVE 服务器密钥
检索客户端套接字的当前服务器密钥。您可以提供 32 字节的缓冲区来检索二进制密钥值,或者提供 41 字节的缓冲区来检索可打印的 Z85 格式密钥。注意:要获取可打印的密钥,缓冲区必须有 41 字节大小,以容纳 40 个字符的密钥值和一个 null 字节。
选项值类型 |
二进制数据或 Z85 字符串 |
选项值大小 |
32 或 41 |
默认值 |
空 |
适用套接字类型 |
所有,使用 TCP 传输时 |
ZMQ_EVENTS: 检索套接字事件状态
'ZMQ_EVENTS' 选项将检索指定 'socket' 的事件状态。返回的值是一个位掩码,由以下事件标志的组合进行 OR 操作构建而成:
- ZMQ_POLLIN
-
指示可以从指定套接字接收至少一条消息而不会阻塞。
- ZMQ_POLLOUT
-
指示可以向指定套接字发送至少一条消息而不会阻塞。
由 'ZMQ_FD' 选项返回的文件描述符已准备好读取,但后续检索 'ZMQ_EVENTS' 选项未返回实际事件的组合是有效的;应用程序应简单地忽略这种情况,并重新启动其轮询操作/事件循环。
选项值类型 |
int |
选项值单位 |
不适用(标志) |
默认值 |
不适用 |
适用套接字类型 |
所有 |
ZMQ_FD: 检索与套接字关联的文件描述符
'ZMQ_FD' 选项将检索与指定 'socket' 关联的文件描述符。返回的文件描述符可用于将套接字集成到现有事件循环中;0MQ 库将通过使文件描述符变为可读来以边缘触发的方式指示套接字上的任何待处理事件。
注意
|
从返回的文件描述符读取的能力不一定表示基础套接字有消息可读或可写;应用程序必须通过后续检索 'ZMQ_EVENTS' 选项来获取实际的事件状态。 |
注意
|
返回的文件描述符也由 'zmq_send' 和 'zmq_recv' 函数内部使用。由于描述符是边缘触发的,应用程序必须在每次调用 'zmq_send' 或 'zmq_recv' 后更新 'ZMQ_EVENTS' 的状态。更明确地说:调用 'zmq_send' 后,套接字可能变为可读(反之亦然),而不会触发文件描述符上的读取事件。 |
警告
|
返回的文件描述符仅用于 'poll' 或类似的系统调用。应用程序决不能尝试直接向其读取或写入数据,也不应尝试关闭它。 |
选项值类型 |
POSIX 系统上是 int,Windows 上是 SOCKET |
选项值单位 |
不适用 |
默认值 |
不适用 |
适用套接字类型 |
所有 |
ZMQ_GSSAPI_PLAINTEXT: 检索 GSSAPI 明文或加密状态
返回之前在套接字上设置的 'ZMQ_GSSAPI_PLAINTEXT' 选项(如果存在)。值为 '1' 表示通信将使用明文。值为 '0' 表示通信将加密。
选项值类型 |
int |
选项值单位 |
0, 1 |
默认值 |
0 (假) |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_GSSAPI_PRINCIPAL: 检索 GSSAPI 主体名称
'ZMQ_GSSAPI_PRINCIPAL' 选项将检索为 GSSAPI 安全机制设置的主体名称。返回的值将是一个以 NULL 结尾的字符串,可以为空。返回的大小应包含结尾的 null 字节。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
空字符串 |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_GSSAPI_SERVER: 检索当前 GSSAPI 服务器角色
返回之前在套接字上设置的 'ZMQ_GSSAPI_SERVER' 选项(如果存在)。
选项值类型 |
int |
选项值单位 |
0, 1 |
默认值 |
0 (假) |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_GSSAPI_SERVICE_PRINCIPAL: 检索 GSSAPI 服务主体名称
'ZMQ_GSSAPI_SERVICE_PRINCIPAL' 选项将检索 GSSAPI 客户端套接字打算连接到的 GSSAPI 服务器的主体名称。返回的值将是一个以 NULL 结尾的字符串,可以为空。返回的大小应包含结尾的 null 字节。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
空字符串 |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE: 检索服务主体名称类型
返回之前在套接字上设置的 'ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE' 选项(如果存在)。值为 'ZMQ_GSSAPI_NT_HOSTBASED' (0) 表示用 'ZMQ_GSSAPI_SERVICE_PRINCIPAL' 指定的名称被解释为主机名。值为 'ZMQ_GSSAPI_NT_USER_NAME' (1) 表示被解释为本地用户名。值为 'ZMQ_GSSAPI_NT_KRB5_PRINCIPAL' (2) 表示被解释为未解析的主体名称字符串(仅对 krb5 GSSAPI 机制有效)。
选项值类型 |
int |
选项值单位 |
0, 1, 2 |
默认值 |
0 (ZMQ_GSSAPI_NT_HOSTBASED) |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_GSSAPI_PRINCIPAL_NAMETYPE: 检索主体名称类型
返回之前在套接字上设置的 'ZMQ_GSSAPI_PRINCIPAL_NAMETYPE' 选项(如果存在)。值为 'ZMQ_GSSAPI_NT_HOSTBASED' (0) 表示用 'ZMQ_GSSAPI_PRINCIPAL' 指定的名称被解释为主机名。值为 'ZMQ_GSSAPI_NT_USER_NAME' (1) 表示被解释为本地用户名。值为 'ZMQ_GSSAPI_NT_KRB5_PRINCIPAL' (2) 表示被解释为未解析的主体名称字符串(仅对 krb5 GSSAPI 机制有效)。
选项值类型 |
int |
选项值单位 |
0, 1, 2 |
默认值 |
0 (ZMQ_GSSAPI_NT_HOSTBASED) |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_HANDSHAKE_IVL: 检索最大握手间隔
'ZMQ_HANDSHAKE_IVL' 选项将检索指定 'socket' 的最大握手间隔。握手是在首次打开连接时发生的套接字配置信息(套接字类型、路由 ID、安全设置)交换,仅适用于面向连接的传输。如果在配置的时间内未完成握手,连接将被关闭。值 0 表示没有握手时间限制。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
30000 |
适用套接字类型 |
除 ZMQ_STREAM 外的所有,仅适用于面向连接的传输 |
ZMQ_IDENTITY: 检索套接字身份
此选项名称现已废弃。请使用 ZMQ_ROUTING_ID 代替。目前 ZMQ_IDENTITY 仍作为别名保留。
ZMQ_IMMEDIATE: 检索连接时附加值
检索连接时附加值的状态。如果设置为 1
,将延迟连接时管道的附加,直到底层连接完成。如果没有其他连接,这将导致套接字阻塞,但会防止等待连接的管道队列填满。
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
0 (假) |
适用套接字类型 |
所有,主要在使用 TCP/IPC 传输时。 |
ZMQ_INVERT_MATCHING: 检索反转过滤状态
返回 'ZMQ_INVERT_MATCHING' 选项的值。值为 1
表示套接字使用反转前缀匹配。
在 'PUB' 和 'XPUB' 套接字上,这会导致消息发送到所有连接的套接字,'除了' 订阅了与消息匹配的前缀的那些。在 'SUB' 套接字上,这会导致用户只接收与套接字任何订阅都'不'匹配的传入消息。
无论何时在 'PUB' 套接字上将 'ZMQ_INVERT_MATCHING' 设置为 1,所有连接到它的 'SUB' 套接字也必须将此选项设置为 1。否则将导致 'SUB' 套接字拒绝 'PUB' 套接字发送给它们的所有内容。'XSUB' 套接字不需要这样做,因为它们不过滤传入消息。
选项值类型 |
int |
选项值单位 |
0,1 |
默认值 |
0 |
适用套接字类型 |
ZMQ_PUB, ZMQ_XPUB, ZMQ_SUB |
ZMQ_IPV4ONLY: 检索仅 IPv4 套接字覆盖状态
检索套接字的仅 IPv4 选项。此选项已废弃。请使用 ZMQ_IPV6 选项。
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
1 (真) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_IPV6: 检索 IPv6 套接字状态
检索套接字的 IPv6 选项。值为 1
表示套接字上启用了 IPv6,而 0
表示套接字仅使用 IPv4。启用 IPv6 后,套接字将连接到 IPv4 和 IPv6 主机,或接受来自它们的连接。
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
0 (假) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_LAST_ENDPOINT: 检索最后一个设置的端点
'ZMQ_LAST_ENDPOINT' 选项将检索 TCP 和 IPC 传输绑定的最后一个端点。返回的值将是 ZMQ DSN 格式的字符串。请注意,如果 TCP 主机是 INADDR_ANY(由 * 表示),则返回的地址将是 0.0.0.0(对于 IPv4)。注意:由于 getsockname() 不工作,在 GNU/Hurd 上不支持 IPC。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
NULL |
适用套接字类型 |
所有,绑定 TCP 或 IPC 传输时 |
ZMQ_LINGER: 检索套接字关闭的逗留期
'ZMQ_LINGER' 选项将检索指定 'socket' 的逗留期。逗留期决定了套接字通过 zmq_close 关闭后,尚未发送给对等端的待处理消息将在内存中停留多久,并进一步影响通过 zmq_ctx_term 终止套接字的 context。以下概述了不同的行为:
-
默认值 '-1' 指定无限逗留期。调用 zmq_close() 后,待处理消息不会被丢弃;尝试使用 zmq_ctx_term() 终止套接字的 context 将阻塞,直到所有待处理消息已发送给对等端。
-
值 '0' 指定无逗留期。套接字通过 zmq_close() 关闭时,待处理消息将立即被丢弃。
-
正值以毫秒为单位指定逗留期的上限。调用 zmq_close() 后,待处理消息不会被丢弃;尝试使用 zmq_ctx_term() 终止套接字的 context 将阻塞,直到所有待处理消息已发送给对等端,或者逗留期到期,之后任何待处理消息将被丢弃。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
-1 (无限) |
适用套接字类型 |
所有 |
ZMQ_MAXMSGSIZE: 最大可接受入站消息大小
该选项将检索入站消息的限制。如果对等端发送的消息大于 ZMQ_MAXMSGSIZE,它将被断开连接。值 -1 表示“无限制”。
选项值类型 |
int64_t |
选项值单位 |
字节 |
默认值 |
-1 |
适用套接字类型 |
所有 |
ZMQ_MECHANISM: 检索当前安全机制
'ZMQ_MECHANISM' 选项将检索套接字的当前安全机制。
选项值类型 |
int |
选项值单位 |
ZMQ_NULL, ZMQ_PLAIN, ZMQ_CURVE 或 ZMQ_GSSAPI |
默认值 |
ZMQ_NULL |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_MULTICAST_HOPS: 多播数据包的最大网络跳数
该选项将检索出站多播数据包使用的生存时间。默认值 1 表示多播数据包不会离开本地网络。
选项值类型 |
int |
选项值单位 |
网络跳数 |
默认值 |
1 |
适用套接字类型 |
所有,使用多播传输时 |
ZMQ_MULTICAST_MAXTPDU: 多播数据包的最大传输数据单元大小
'ZMQ_MULTICAST_MAXTPDU' 选项将检索出站多播数据包使用的最大传输数据单元大小。
此值必须设置为小于或等于所有需要多播接收的网络路径的最小最大传输单元(MTU)。
选项值类型 |
int |
选项值单位 |
字节 |
默认值 |
1500 |
适用套接字类型 |
所有,使用多播传输时 |
ZMQ_PLAIN_PASSWORD: 检索当前密码
'ZMQ_PLAIN_PASSWORD' 选项将检索为 PLAIN 安全机制设置的最后一个密码。返回的值将是一个以 NULL 结尾的字符串,可以为空。返回的大小应包含结尾的 null 字节。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
空字符串 |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_PLAIN_SERVER: 检索当前 PLAIN 服务器角色
返回之前在套接字上设置的 'ZMQ_PLAIN_SERVER' 选项(如果存在)。
选项值类型 |
int |
选项值单位 |
0, 1 |
默认值 |
int |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_PLAIN_USERNAME: 检索当前 PLAIN 用户名
'ZMQ_PLAIN_USERNAME' 选项将检索为 PLAIN 安全机制设置的最后一个用户名。返回的值将是一个以 NULL 结尾的字符串,可以为空。返回的大小应包含结尾的 null 字节。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
空字符串 |
适用套接字类型 |
所有,使用 TCP 或 IPC 传输时 |
ZMQ_USE_FD: 检索预分配的套接字文件描述符
'ZMQ_USE_FD' 选项将检索已分配给 ZMQ 套接字的预分配文件描述符(如果存在)。如果套接字未设置预分配文件描述符,将返回 -1。
选项值类型 |
int |
选项值单位 |
文件描述符 |
默认值 |
-1 |
适用套接字类型 |
所有已绑定的套接字,使用 IPC 或 TCP 传输时 |
ZMQ_PRIORITY: 检索套接字优先级 ~~~~~~~~~~~~~~ 获取将在此套接字上发送的所有数据包的协议定义优先级,操作系统支持时有效。
选项值类型 |
int |
选项值单位 |
>0 |
默认值 |
0 |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_RATE: 检索多播数据速率
'ZMQ_RATE' 选项将检索使用指定 'socket' 的多播传输的最大发送或接收数据速率。
选项值类型 |
int |
选项值单位 |
千比特每秒 |
默认值 |
100 |
适用套接字类型 |
所有,使用多播传输时 |
ZMQ_RCVBUF: 检索内核接收缓冲区大小
'ZMQ_RCVBUF' 选项将检索指定 'socket' 的底层内核接收缓冲区大小。详细信息请参考您的操作系统关于 'SO_RCVBUF' 套接字选项的文档。
选项值类型 |
int |
选项值单位 |
字节 |
默认值 |
8192 |
适用套接字类型 |
所有 |
ZMQ_RCVHWM: 检索入站消息的高水位标记
'ZMQ_RCVHWM' 选项将返回指定 'socket' 上入站消息的高水位标记。高水位标记是 0MQ 为指定 'socket' 与之通信的任何单个对等端在内存中排队的最大未处理消息数的硬限制。值为零表示无限制。
如果达到此限制,套接字将进入异常状态,并且根据套接字类型,0MQ 将采取适当的行动,例如阻塞或丢弃已发送的消息。关于每种套接字类型采取的具体行动的详细信息,请参考 zmq_socket 中的单独套接字描述。
选项值类型 |
int |
选项值单位 |
消息数 |
默认值 |
1000 |
适用套接字类型 |
所有 |
ZMQ_RCVMORE: 更多消息数据部分待接收
'ZMQ_RCVMORE' 选项将返回 True (1),如果从 'socket' 最后接收到的消息部分是带有更多后续部分的。如果没有后续的数据部分,此选项将返回 False (0)。
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
不适用 |
适用套接字类型 |
所有 |
ZMQ_RCVTIMEO: 套接字操作返回 EAGAIN 的最大时间
检索套接字上接收操作的超时时间。如果值为 0
,zmq_recv(3) 将立即返回,如果没有可接收的消息,则返回 EAGAIN 错误。如果值为 -1
,将阻塞直到有消息可用。对于所有其他值,它将等待该时间量,然后返回 EAGAIN 错误。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
-1 (无限) |
适用套接字类型 |
所有 |
ZMQ_RECONNECT_IVL: 检索重连间隔
'ZMQ_RECONNECT_IVL' 选项将检索指定 'socket' 的初始重连间隔。重连间隔是 0MQ 在尝试重连断开的对等端时(使用面向连接的传输)等待的时间段。值 -1 表示不重连。
注意
|
0MQ 可能会随机化重连间隔,以防止在每个套接字有大量对等端的拓扑中出现重连风暴。 |
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
100 |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_RECONNECT_IVL_MAX: 检索最大重连间隔
'ZMQ_RECONNECT_IVL_MAX' 选项将检索指定 'socket' 的最大重连间隔。0MQ 在重连尝试之间最多等待配置的时间间隔。间隔会随每次尝试呈指数增长(即:加倍),直到达到 ZMQ_RECONNECT_IVL_MAX。默认值表示重连间隔完全基于 ZMQ_RECONNECT_IVL,并且不执行指数退避。
注意
|
该值必须大于或等于 ZMQ_RECONNECT_IVL,否则将被忽略。 |
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
0(将使用 ZMQ_RECONNECT_IVL) |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_RECONNECT_STOP: 检索重连停止的条件
'ZMQ_RECONNECT_STOP' 选项将检索自动重连将停止的条件。
'ZMQ_RECONNECT_STOP_CONN_REFUSED' 选项将在 0MQ 从 connect 接收到 ECONNREFUSED 返回码时停止重连。这表明指定端点没有绑定任何代码。
选项值类型 |
int |
选项值单位 |
'ZMQ_RECONNECT_STOP_CONN_REFUSED' |
默认值 |
0 |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_RECOVERY_IVL: 获取多播恢复间隔
'ZMQ_RECOVERY_IVL' 选项将检索使用指定 'socket' 的多播传输的恢复间隔。恢复间隔决定了接收者可以离开多播组的最大时间(以毫秒为单位),超过此时间将发生不可恢复的数据丢失。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
10000 |
适用套接字类型 |
所有,使用多播传输时 |
ZMQ_ROUTING_ID: 检索套接字路由 ID
'ZMQ_ROUTING_ID' 选项将检索指定 'socket' 的路由 ID。路由 ID 仅由请求/应答模式使用。具体来说,它可以与 ROUTER 套接字结合使用,将消息路由到具有特定路由 ID 的对等端。
路由 ID 必须至少为一字节,最多为 255 字节长。以零字节开头的身份保留供 0MQ 基础设施使用。
选项值类型 |
二进制数据 |
选项值单位 |
不适用 |
默认值 |
NULL |
适用套接字类型 |
ZMQ_REP, ZMQ_REQ, ZMQ_ROUTER, ZMQ_DEALER. |
ZMQ_SNDBUF: 检索内核发送缓冲区大小
'ZMQ_SNDBUF' 选项将检索指定 'socket' 的底层内核发送缓冲区大小。详细信息请参考您的操作系统关于 'SO_SNDBUF' 套接字选项的文档。
选项值类型 |
int |
选项值单位 |
字节 |
默认值 |
8192 |
适用套接字类型 |
所有 |
ZMQ_SNDHWM: 检索出站消息的高水位标记
'ZMQ_SNDHWM' 选项将返回指定 'socket' 上出站消息的高水位标记。高水位标记是 0MQ 为指定 'socket' 与之通信的任何单个对等端在内存中排队的最大未处理消息数的硬限制。值为零表示无限制。
如果达到此限制,套接字将进入异常状态,并且根据套接字类型,0MQ 将采取适当的行动,例如阻塞或丢弃已发送的消息。关于每种套接字类型采取的具体行动的详细信息,请参考 zmq_socket 中的单独套接字描述。
选项值类型 |
int |
选项值单位 |
消息数 |
默认值 |
1000 |
适用套接字类型 |
所有 |
ZMQ_SNDTIMEO: 套接字操作返回 EAGAIN 的最大时间
检索套接字上发送操作的超时时间。如果值为 0
,zmq_send(3) 将立即返回,如果无法发送消息,则返回 EAGAIN 错误。如果值为 -1
,将阻塞直到消息发送成功。对于所有其他值,它将尝试发送消息该时间量,然后返回 EAGAIN 错误。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
-1 (无限) |
适用套接字类型 |
所有 |
ZMQ_SOCKS_PROXY: 检索 SOCKS5 代理地址
'ZMQ_SOCKS_PROXY' 选项将检索 SOCKS5 代理地址的字符串格式。返回的值将是一个以 NULL 结尾的字符串,可以为空。返回的大小应包含结尾的 null 字节。
选项值类型 |
以 NULL 结尾的字符串 |
选项值单位 |
不适用 |
默认值 |
空字符串 |
适用套接字类型 |
所有,使用 TCP 传输时 |
ZMQ_TCP_KEEPALIVE: 覆盖 SO_KEEPALIVE 套接字选项
覆盖 'SO_KEEPALIVE' 套接字选项(操作系统支持时)。默认值 -1
表示跳过任何覆盖并使用操作系统默认值。
选项值类型 |
int |
选项值单位 |
-1,0,1 |
默认值 |
-1(使用操作系统默认值) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_TCP_KEEPALIVE_CNT: 覆盖 TCP_KEEPCNT 套接字选项
覆盖 'TCP_KEEPCNT' 套接字选项(操作系统支持时)。默认值 -1
表示跳过任何覆盖并使用操作系统默认值。
选项值类型 |
int |
选项值单位 |
-1,>0 |
默认值 |
-1(使用操作系统默认值) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_TCP_KEEPALIVE_IDLE: 覆盖 TCP_KEEPIDLE(某些操作系统上是 TCP_KEEPALIVE)
覆盖 'TCP_KEEPIDLE'(某些操作系统上是 'TCP_KEEPALIVE')套接字选项(操作系统支持时)。默认值 -1
表示跳过任何覆盖并使用操作系统默认值。
选项值类型 |
int |
选项值单位 |
-1,>0 |
默认值 |
-1(使用操作系统默认值) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_TCP_KEEPALIVE_INTVL: 覆盖 TCP_KEEPINTVL 套接字选项
覆盖 'TCP_KEEPINTVL' 套接字选项(操作系统支持时)。默认值 -1
表示跳过任何覆盖并使用操作系统默认值。
选项值类型 |
int |
选项值单位 |
-1,>0 |
默认值 |
-1(使用操作系统默认值) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_TCP_MAXRT: 检索最大 TCP 重传超时
在支持的操作系统上,检索未确认 TCP 重传超时前的时间。系统通常遵循指数退避策略进行多次 TCP 重传。这意味着在网络中断后,可能需要很长时间才能重新建立会话。设置此选项允许在更短的时间间隔内发生超时。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
0(使用操作系统默认值) |
适用套接字类型 |
所有,使用 TCP 传输时。 |
ZMQ_THREAD_SAFE: 检索套接字线程安全性
'ZMQ_THREAD_SAFE' 选项将检索一个布尔值,指示套接字是否线程安全。请参阅 zmq_socket 了解哪些套接字是线程安全的。
选项值类型 |
int |
选项值单位 |
布尔值 |
适用套接字类型 |
所有 |
ZMQ_TOS: 检索服务类型套接字覆盖状态
检索套接字的 IP_TOS 选项。
选项值类型 |
int |
选项值单位 |
>0 |
默认值 |
0 |
适用套接字类型 |
所有,仅适用于面向连接的传输 |
ZMQ_TYPE: 检索套接字类型
'ZMQ_TYPE' 选项将检索指定 'socket' 的套接字类型。套接字类型在创建套接字时指定,之后无法修改。
选项值类型 |
int |
选项值单位 |
不适用 |
默认值 |
不适用 |
适用套接字类型 |
所有 |
ZMQ_ZAP_DOMAIN: 检索 RFC 27 认证域
'ZMQ_ZAP_DOMAIN' 选项将检索为套接字设置的最后一个 ZAP 域。返回的值将是一个以 NULL 结尾的字符串,可以为空。空字符串表示 ZAP 认证已禁用。返回的大小应包含结尾的 null 字节。
选项值类型 |
字符串 |
选项值单位 |
不适用 |
默认值 |
未设置 |
适用套接字类型 |
所有,使用 TCP 传输时 |
ZMQ_ZAP_ENFORCE_DOMAIN: 检索 ZAP 域处理模式
'ZMQ_ZAP_ENFORCE_DOMAIN' 选项将检索决定是否严格要求 ZAP 域的标志。
选项值类型 |
int |
选项值单位 |
0, 1 |
默认值 |
0 |
适用套接字类型 |
所有,使用 ZAP 时 |
ZMQ_VMCI_BUFFER_SIZE: 检索 VMCI 套接字缓冲区大小
ZMQ_VMCI_BUFFER_SIZE
选项将检索套接字底层缓冲区的大小。用于连接建立前的协商过程。
选项值类型 |
uint64_t |
选项值单位 |
字节 |
默认值 |
65546 |
适用套接字类型 |
所有,使用 VMCI 传输时 |
ZMQ_VMCI_BUFFER_MIN_SIZE: 检索 VMCI 套接字最小缓冲区大小
ZMQ_VMCI_BUFFER_MIN_SIZE
选项将检索套接字底层缓冲区的最小大小。用于连接建立前的协商过程。
选项值类型 |
uint64_t |
选项值单位 |
字节 |
默认值 |
128 |
适用套接字类型 |
所有,使用 VMCI 传输时 |
ZMQ_VMCI_BUFFER_MAX_SIZE: 检索 VMCI 套接字最大缓冲区大小
ZMQ_VMCI_BUFFER_MAX_SIZE
选项将检索套接字底层缓冲区的最大大小。用于连接建立前的协商过程。
选项值类型 |
uint64_t |
选项值单位 |
字节 |
默认值 |
262144 |
适用套接字类型 |
所有,使用 VMCI 传输时 |
ZMQ_VMCI_CONNECT_TIMEOUT: 检索 VMCI 套接字连接超时
ZMQ_VMCI_CONNECT_TIMEOUT
选项将检索套接字的连接超时。
选项值类型 |
int |
选项值单位 |
毫秒 |
默认值 |
-1 |
适用套接字类型 |
所有,使用 VMCI 传输时 |
ZMQ_MULTICAST_LOOP: 检索多播本地环回配置
检索当前多播环回配置。值为 1
表示在此套接字上发送的多播数据包将环回发送到本地监听接口。
选项值类型 |
int |
选项值单位 |
0, 1 |
默认值 |
1 |
适用套接字类型 |
ZMQ_RADIO,使用 UDP 多播传输时 |
ZMQ_ROUTER_NOTIFY: 检索 router 套接字通知设置
检索 router 套接字的当前通知设置。返回的值是由 ZMQ_NOTIFY_CONNECT 和 ZMQ_NOTIFY_DISCONNECT 标志组成的位掩码,分别表示连接和断开连接通知已启用。值为 '0' 表示通知已关闭。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
0, ZMQ_NOTIFY_CONNECT, ZMQ_NOTIFY_DISCONNECT, ZMQ_NOTIFY_CONNECT | ZMQ_NOTIFY_DISCONNECT |
默认值 |
0 |
适用套接字类型 |
ZMQ_ROUTER |
ZMQ_IN_BATCH_SIZE: 最大接收批大小
获取在单个 'recv' 系统调用中可以接收的最大消息数量。
不能为零。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
消息数 |
默认值 |
8192 |
适用套接字类型 |
所有,使用 TCP, IPC, PGM 或 NORM 传输时。 |
ZMQ_OUT_BATCH_SIZE: 最大发送批大小
获取在单个 'send' 系统调用中可以发送的最大消息数量。
不能为零。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
消息数 |
默认值 |
8192 |
适用套接字类型 |
所有,使用 TCP, IPC, PGM 或 NORM 传输时。 |
ZMQ_TOPICS_COUNT: 接收到的主题订阅数量
获取主题(前缀)订阅的数量,可以是:* 在 (X)PUB 套接字上从所有连接的 (X)SUB 套接字接收到的,或者 * 在 (X)SUB 套接字上从所有连接的 (X)PUB 套接字确认的。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
不适用 |
默认值 |
0 |
适用套接字类型 |
ZMQ_PUB, ZMQ_XPUB, ZMQ_SUB, ZMQ_XSUB |
ZMQ_NORM_MODE: 检索 NORM 发送方模式
获取控制 NORM 传输操作的 NORM 发送方模式。NORM 支持固定速率操作 (0='ZMQ_NORM_FIXED')、拥塞控制模式 (1='ZMQ_NORM_CC')、容错拥塞控制 (2='ZMQ_NORM_CCL')、启用显式拥塞通知 (ECN) 的拥塞控制 (3='ZMQ_NORM_CCE') 和仅 ECN 拥塞控制 (4='ZMQ_NORM_CCE_ECNONLY')。默认值是 TCP 友好的拥塞控制模式。固定速率模式(使用 'ZMQ_RATE' 设置的数据速率)提供更好的性能,但必须小心防止数据丢失。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
0, 1, 2, 3, 4 |
默认值 |
1 ('ZMQ_NORM_CC') |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_UNICAST_NACK: 检索 NORM 单播 NACK 模式
检索多播接收方的 NORM 单播 NACK 模式设置状态。如果设置,NORM 接收方将使用单播而不是多播向发送方发送否定确认 (NACK)。指定单播地址的 NORM 传输端点默认将使用单播 NACK(无需设置 'ZMQ_NORM_UNICAST_NACK')。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
0 (假) |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_BUFFER_SIZE: 检索 NORM 缓冲区大小
获取 NORM 传输发送方、接收方和流的 NORM 缓冲区大小。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
千字节 |
默认值 |
2048 |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_SEGMENT_SIZE: 检索 NORM 段大小
获取 NORM 发送方段大小,这是单个 NORM 消息的最大消息有效载荷大小(ZMQ 消息可能会被拆分成多个 NORM 消息)。理想情况下,考虑到额外的 NORM 消息头(最多 48 字节)后,此值应适合系统/网络最大传输单元 (MTU)。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
字节 |
默认值 |
1400 |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_BLOCK_SIZE: 检索 NORM 块大小
获取 NORM 发送方块大小,这是 NORM FEC 编码块中的段数。NORM 修复操作在块边界处进行。最大值为 255,但奇偶校验数据包 ('ZMQ_NORM_NUM_PARITY') 被限制为 (255 - 'ZMQ_NORM_BLOCK_SIZE') 的值。最小值为 ('ZMQ_NORM_NUM_PARITY' + 1)。如果提供了无效设置,实际值可能因 'ZMQ_NORM_NUM_PARITY' 和 'ZMQ_NORM_NUM_AUTOPARITY' 的设置而异。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
>0, <=255 |
默认值 |
16 |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_NUM_PARITY: 检索 NORM 奇偶校验段设置
获取发送方愿意为每个 FEC 编码块计算的最大 NORM 奇偶校验符号段数,用于修复丢失的数据。最大值为 255,但进一步限制为 (255 - 'ZMQ_NORM_BLOCK_SIZE') 的值。最小值为 'ZMQ_NORM_NUM_AUTOPARITY'。如果提供了无效设置,实际值可能因 'ZMQ_NORM_NUM_AUTOPARITY' 的设置而异。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
>0, <255 |
默认值 |
4 |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_NUM_AUTOPARITY: 检索主动 NORM 奇偶校验段设置
获取发送方将在每个 FEC 编码块末尾主动发送的 NORM 奇偶校验符号段数。默认情况下,不会发送主动奇偶校验段;相反,奇偶校验段仅在响应修复请求 (NACK) 时发送。最大值为 255,但进一步限制为最大值 'ZMQ_NORM_NUM_PARITY'。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
>=0, <255 |
默认值 |
0 |
适用套接字类型 |
所有,使用 NORM 传输时。 |
ZMQ_NORM_PUSH: 检索 NORM 推送模式
获取 NORM 流推送模式的状态,该模式会改变发送方在将新数据加入队列时的行为。默认情况下,NORM 在等待传输和/或修复旧数据时会停止接受新消息。启用推送模式会丢弃最旧的数据(可能是待修复或可能从未传输的数据),以便接受新数据。在更重要的是快速传递新数据而非可靠传递旧数据的情况下,这可能很有用。
注意
|
处于草案状态,尚未在稳定版本中可用。 |
选项值类型 |
int |
选项值单位 |
布尔值 |
默认值 |
0 (假) |
适用套接字类型 |
所有,使用 NORM 传输时。 |
返回值
如果成功,zmq_getsockopt() 函数将返回零。否则,它将返回 -1
并将 'errno' 设置为以下定义的值之一。
错误
- EINVAL
-
请求的选项 option_name 未知,或请求的 option_len 或 option_value 无效,或由 option_len 指定的 option_value 指向的缓冲区大小不足以存储选项值。
- ETERM
-
与指定 'socket' 关联的 0MQ 'context' 已被终止。
- ENOTSOCK
-
提供的 'socket' 无效。
- EINTR
-
操作被信号传递中断。
示例
/* Retrieve high water mark into sndhwm */ int sndhwm; size_t sndhwm_size = sizeof (sndhwm); rc = zmq_getsockopt (socket, ZMQ_SNDHWM, &sndhwm, &sndhwm_size); assert (rc == 0);
另请参阅
作者
此页面由 0MQ 社区编写。要进行更改,请阅读 0MQ 贡献政策:https://zeromq.cn/how-to-contribute/。