名称

zmq_close - 关闭 0MQ 套接字

概要

int zmq_close (void '*socket');

说明

zmq_close() 函数应销毁由 'socket' 参数引用的套接字。任何物理上从网络接收到但应用程序尚未使用 zmq_recv() 接收的未处理消息都将被丢弃。应用程序使用 zmq_send() 发送但尚未物理传输到网络的待丢弃消息的行为取决于指定 'socket' 的 ZMQ_LINGER 套接字选项的值。

每个套接字必须且仅必须调用 zmq_close() 一次。如果从未调用它,zmq_ctx_term() 将永远阻塞。如果对同一个套接字多次调用它,或者如果 'socket' 不指向一个套接字,则行为是未定义的。

注意
ZMQ_LINGER 的默认设置不会丢弃未发送的消息;这种行为可能导致应用程序在调用 zmq_ctx_term() 时阻塞。有关详细信息,请参阅 zmq_setsockoptzmq_ctx_term
注意
此 API 将异步完成,因此返回后并非所有资源都会被解除分配。有关 linger 的详细信息,请参阅上文。

返回值

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

错误

ENOTSOCK

提供的 'socket' 为 NULL。

另请参阅

作者

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