名称

zmq_disconnect - 断开套接字与端点的连接

概要

int zmq_disconnect (void '*socket', const char '*endpoint');

描述

zmq_disconnect() 函数用于断开由 'socket' 参数指定的套接字与由 'endpoint' 参数指定的端点之间的连接。请注意,实际的断开连接系统调用可能会稍后发生。

断开连接后,套接字将停止接收来自该端点的消息。此外,套接字将不再能够向该端点排队发送消息。与该端点关联的出站消息队列将被丢弃。但是,如果套接字的linger period(逗留期)为非零,libzmq 将仍尝试传输这些被丢弃的消息,直到 linger period 过期。

'endpoint' 参数的描述请参考 zmq_connect

注意
ZMQ_LINGER 的默认设置不会丢弃未发送的消息;此行为可能导致应用程序在调用 zmq_ctx_term() 时阻塞。详细信息请参阅 zmq_setsockoptzmq_ctx_term

返回值

如果成功,zmq_disconnect() 函数应返回零。否则,应返回 -1 并将 'errno' 设置为下面定义的值之一。

错误

EINVAL

提供的端点无效。

ETERM

与指定 'socket' 相关联的 0MQ 'context' 已被终止。

ENOTSOCK

提供的 'socket' 无效。

ENOENT

套接字未使用提供的端点。

示例

将一个订阅者套接字连接到进程内和 TCP 传输
/* Create a ZMQ_SUB socket */
void *socket = zmq_socket (context, ZMQ_SUB);
assert (socket);
/* Connect it to the host server001, port 5555 using a TCP transport */
rc = zmq_connect (socket, "tcp://server001:5555");
assert (rc == 0);
/* Disconnect from the previously connected endpoint */
rc = zmq_disconnect (socket, "tcp://server001:5555");
assert (rc == 0);

另请参阅

作者

此页面由 0MQ 社区编写。要进行修改,请阅读 0MQ 贡献政策:https://zeromq.cn/how-to-contribute/