名称
zmq_vmci - 0MQ 虚拟机通信接口 (VMCI) 套接字传输协议
概要
VMCI 传输协议用于在运行于同一主机上的 VMware 虚拟机之间、虚拟机与主机之间以及虚拟机内部(类似 ipc 的进程间传输)传递消息。
注意
|
在 Mac OS X 10.9 及更高版本上不支持虚拟机与主机之间的通信。 |
地址格式
一个 0MQ 端点是一个由 'transport'`://` 后跟一个 'address' 组成的字符串。'transport' 指定底层协议。'address' 指定特定于传输协议的连接地址。
对于 VMCI 传输协议,'transport' 是 vmci
,而 'address' 部分的含义如下所述。
绑定套接字
使用 'vmci' 传输协议通过 zmq_bind() 将 'socket' 绑定到本地地址时,'endpoint' 应被解释为一个 'interface' 后跟一个冒号和要使用的端口号。
一个 'interface' 可以指定为以下任一形式:
-
通配符
*
,表示所有可用接口。 -
由
VMCISock_GetLocalCID
返回的整数或@
(ZeroMQ 内部将调用 VMCISock_GetLocalCID)。
端口可以指定为:
-
一个数值,在 POSIX 系统上通常大于 1024。
-
通配符
*
,表示系统分配的临时端口。
解绑套接字中的通配符地址
当在 zmq_bind() 中使用了通配符 *
'endpoint' 时,调用者应该使用从 ZMQ_LAST_ENDPOINT 套接字选项获取的实际 'endpoint' 来使用 zmq_unbind() 解绑该 'endpoint'。
连接套接字
使用 'vmci' 传输协议通过 zmq_connect() 将套接字连接到对端地址时,'endpoint' 应被解释为一个 'peer address' 后跟一个冒号和要使用的端口号。
一个 'peer address' 必须是对端的 CID。
示例
// VMCI port 5555 on all available interfaces rc = zmq_bind(socket, "vmci://*:5555"); assert (rc == 0); // VMCI port 5555 on the local loop-back interface on all platforms cid = VMCISock_GetLocalCID(); sprintf(endpoint, "vmci://%d:5555", cid); rc = zmq_bind(socket, endpoint); assert (rc == 0);
// Connecting using a CID sprintf(endpoint, "vmci://%d:5555", cid); rc = zmq_connect(socket, endpoint); assert (rc == 0);
作者
此页面由 0MQ 社区编写。要进行更改,请阅读 0MQ 贡献策略:https://zeromq.cn/how-to-contribute/。