NAME
zmq_bind - 在套接字上接受传入连接
SYNOPSIS
int zmq_bind (void '*socket', const char '*endpoint');
DESCRIPTION
zmq_bind() 函数将 'socket' 绑定到本地 'endpoint',然后在该 endpoint 上接受传入连接。
'endpoint' 是一个字符串,由一个 'transport'`://` 后跟一个 'address' 组成。'transport' 指定要使用的底层协议。'address' 指定要绑定的传输层特定地址。
0MQ 提供以下传输方式
除了 'ZMQ_PAIR' 和 'ZMQ_CHANNEL' 之外的每种 0MQ 套接字类型都支持一对多和多对一语义。精确的语义取决于套接字类型,并在 zmq_socket 中定义。
注意
|
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/。