名称
zmq_unbind - 停止在套接字上接受连接
概要
int zmq_unbind (void '*socket', const char '*endpoint');
描述
zmq_unbind() 函数将解除套接字 ('socket' 参数指定) 与端点 ('endpoint' 参数指定) 的绑定。
此外,与该端点关联的传入消息队列将被丢弃。这意味着在解除端点绑定后,如果消息在解除绑定之前已经存在于传入消息队列中,仍有可能接收到源自同一端点的消息。
'endpoint' 参数的描述请参见 zmq_bind
返回值
zmq_unbind() 函数成功时返回零。否则返回 -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_bind (socket, "tcp://127.0.0.1:5555"); assert (rc == 0); /* Disconnect from the previously connected endpoint */ rc = zmq_unbind (socket, "tcp://127.0.0.1:5555"); assert (rc == 0);
解除通配符
*
绑定的套接字/* Create a ZMQ_SUB socket */ void *socket = zmq_socket (context, ZMQ_SUB); assert (socket); /* Bind it to the system-assigned ephemeral port using a TCP transport */ rc = zmq_bind (socket, "tcp://127.0.0.1:*"); assert (rc == 0); /* Obtain real endpoint */ const size_t buf_size = 32; char buf[buf_size]; rc = zmq_getsockopt (socket, ZMQ_LAST_ENDPOINT, buf, (size_t *)&buf_size); assert (rc == 0); /* Unbind socket by real endpoint */ rc = zmq_unbind (socket, buf); assert (rc == 0);
注意
请注意,虽然实现类似于 zmq_disconnect(),但语义不同,这两个函数不应互换使用。绑定的套接字应该解除绑定,连接的套接字应该断开连接。
另请参见
作者
本页面由 0MQ 社区编写。要进行修改,请阅读 0MQ 贡献政策,地址:https://zeromq.cn/how-to-contribute/。