NAME

zmq_bind - 在套接字上接受传入连接

SYNOPSIS

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

DESCRIPTION

zmq_bind() 函数将 'socket' 绑定到本地 'endpoint',然后在该 endpoint 上接受传入连接。

'endpoint' 是一个字符串,由一个 'transport'`://` 后跟一个 'address' 组成。'transport' 指定要使用的底层协议。'address' 指定要绑定的传输层特定地址。

0MQ 提供以下传输方式

'tcp'

使用 TCP 的单播传输,参见 zmq_tcp

'ipc'

本地进程间通信传输,参见 zmq_ipc

'inproc'

本地进程内(线程间)通信传输,参见 zmq_inproc

'pgm', 'epgm'

使用 PGM 的可靠多播传输,参见 zmq_pgm

'vmci'

虚拟机通信接口 (VMCI),参见 zmq_vmci

'udp'

使用 UDP 的不可靠单播和多播,参见 zmq_udp

除了 'ZMQ_PAIR' 和 'ZMQ_CHANNEL' 之外的每种 0MQ 套接字类型都支持一对多和多对一语义。精确的语义取决于套接字类型,并在 zmq_socket 中定义。

'ipc'、'tcp'、'vmci' 和 'udp' 传输方式接受通配符地址:详情请参见 zmq_ipc, zmq_tcp, zmq_vmcizmq_udp

注意
zmq_bind()zmq_connect() 的地址语法可能不同,特别是对于 'tcp'、'pgm' 和 'epgm' 传输方式。
注意
在调用 zmq_bind() 后,套接字会进入 'mute'(静默)状态,直到至少建立一个传入或传出连接,此时套接字进入 'ready'(就绪)状态。在静默状态下,套接字会根据套接字类型阻塞或丢弃消息,具体定义见 zmq_socket。相比之下,在调用 libzmq:zmq_connect 后,套接字进入 'ready'(就绪)状态。

RETURN VALUE

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

ERRORS

EINVAL

提供的 endpoint 无效。

EPROTONOSUPPORT

请求的 'transport' 协议不受支持。

ENOCOMPATPROTO

请求的 'transport' 协议与套接字类型不兼容。

EADDRINUSE

请求的 'address' 已被使用。

EADDRNOTAVAIL

请求的 'address' 不是本地地址。

ENODEV

请求的 'address' 指定了一个不存在的接口。

ETERM

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

ENOTSOCK

提供的 'socket' 无效。

EMTHREAD

没有可用的 I/O 线程来完成任务。

EXAMPLE

将发布者套接字绑定到进程内和 TCP 传输方式
/* Create a ZMQ_PUB socket */
void *socket = zmq_socket (context, ZMQ_PUB);
assert (socket);
/* Bind it to a in-process transport with the address 'my_publisher' */
int rc = zmq_bind (socket, "inproc://my_publisher");
assert (rc == 0);
/* Bind it to a TCP transport on port 5555 of the 'eth0' interface */
rc = zmq_bind (socket, "tcp://eth0:5555");
assert (rc == 0);

SEE ALSO

AUTHORS

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