名称
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_setsockopt 和 zmq_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/。