名称
zmq_connect_peer - 从套接字创建传出连接,并以线程安全和原子方式返回连接的路由 ID。
提要
uint32_t zmq_connect_peer (void '*socket', const char '*endpoint');
描述
zmq_connect_peer() 函数将 'ZMQ_PEER' 套接字连接到指定的 'endpoint',然后返回该 endpoint 的 'routing_id'。
'endpoint' 是一个字符串,由 'transport':// 后面跟着一个 'address' 组成。'transport' 指定要使用的底层协议。'address' 指定要连接的传输层特定地址。
该函数仅支持 'ZMQ_PEER' 套接字类型,否则将返回 0
并将 'errno' 设置为 'ENOTSUP'。
zmq_connect_peer() 支持以下传输方式:
- 'tcp'
-
使用 TCP 的单播传输,参见 zmq_tcp
- 'ipc'
-
本地进程间通信传输,参见 zmq_ipc
- 'inproc'
-
本地进程内(线程间)通信传输,参见 zmq_inproc
- 'ws'
-
使用 WebSockets 的单播传输,参见 zmq_ws
- 'wss'
-
使用 WebSockets over TLS 的单播传输,参见 zmq_wss
返回值
zmq_connect_peer() 函数成功时返回对端的 'routing_id'。否则返回 0
并将 'errno' 设置为以下定义的值之一。
错误
- EINVAL
-
提供的 endpoint 无效。
- EPROTONOSUPPORT
-
请求的 'transport' 协议不支持 'ZMQ_PEER' 套接字。
- ENOCOMPATPROTO
-
请求的 'transport' 协议与套接字类型不兼容。
- ETERM
-
与指定 'socket' 关联的 0MQ 'context' 已终止。
- ENOTSOCK
-
提供的 'socket' 无效。
- EMTHREAD
-
没有可用的 I/O 线程来完成任务。
- ENOTSUP
-
套接字不是 'ZMQ_PEER' 类型。
- EFAULT
-
套接字上设置了 'ZMQ_IMMEDIATE' 选项。
示例
/* Create a ZMQ_SUB socket */ void *socket = zmq_socket (context, ZMQ_PEER); assert (socket); /* Connect it to the host server001, port 5555 using a TCP transport */ uint32_t routing_id = zmq_connect (socket, "tcp://server001:5555"); assert (routing_id == 0); /* Sending a message to the peer */ zmq_msg_t msg; int rc = zmq_msg_init_data (&msg, "HELLO", 5, NULL, NULL); assert (rc == 0); rc = zmq_msg_set_routing_id (&msg, routing_id); assert (rc == 0); rc = zmq_msg_send (&msg, socket, 0); assert (rc == 5); rc = zmq_msg_close (&msg); assert (rc == 0);
作者
此页面由 0MQ 社区撰写。如需修改,请阅读 0MQ 贡献政策:https://zeromq.cn/how-to-contribute/。