【问题标题】:zmq_vmci not supported for QNX VM?QNX VM 不支持 zmq_vmci?
【发布时间】:2017-01-17 10:44:17
【问题描述】:

我一直在用 C 语言在 QNX 6.6 Neutrino 虚拟机上使用 ZMQ。只是一些简单的 req-rep 和 pub-sub 程序。我已经让这些只在一个虚拟机上工作,并在自己的进程中运行每个程序。

//client
void *context = zmq_ctx_new ();
void *requester = zmq_socket (context, ZMQ_REQ);
zmq_connect (requester, "tcp://localhost:8001");

//server
void *context = zmq_ctx_new ();
void *responder = zmq_socket (context, ZMQ_REP);
zmq_bind (responder, "tcp://*:8001")

但是,当我将传输从 tcp 更改为 vmci 时,我收到一条错误消息,表明它不受支持。

错误消息:协议未配置或不受支持。

我的主机是 Windows 7。 我正在使用 VMware Workstation 来托管虚拟机。 我的 libzmq 版本是 4.2.0。

感谢您的帮助。 :)

【问题讨论】:

  • 您可能已经注意到,StackOverflow 社区鼓励用户发布 MCVE 完整示例,包括一个观察到的异常/错误消息的确切副本,以便同时提供相关且可重现的场景。您介意更新您的帖子以包含完整的详细信息以及错误消息吗?感谢并欢迎马特加入这个伟大的知识社区

标签: c virtual-machine zeromq


【解决方案1】:

ZeroMQ vmci:// 传输类需要一些额外的更改

不仅仅是在源代码中从 tcp: 交换到 vmci:

vmci:// 还需要知道(接收)来自 VM 管理程序的 CID

//  Get, show and set the CID
cid       = VMCISock_GetLocalCID();
printf( "Obtained [%d] for using in vmci://<CID>:<port>", cid );
sprintf( aSockEndPOINT,            "vmci://%d:5555",      cid );

//  .bind()
opRetCode = zmq_bind( socket, aSockEndPOINT ); assert ( rc == 0 );

.connect() 方面:

//  --------------------------------------------------------------
//  .connect() using a CID
sprintf( aConnEndPOINT, "vmci://%d:5555", cid );
opRetCode = zmq_connect( socket, aConnEndPOINT ); assert ( rc == 0 );

其他一些适用于练习"wildcard"-bind()-s or for deferred VMCISock_GetLocalCID()-calls的建议


对于 QNX 虚拟机:

能否确认 QNX Neutrino 已成功适配 ZeroMQ?

C 程序包含文件的位置 vmci_sockets.h 包含文件位于以下位置之一:

Linux 来宾 - /usr/lib/vmware-tools/include/vmci

Linux 主机 - /usr/lib/vmware/include/vmci


您能否确认您的 ZeroMQ QNX 端口是 generated by cross-building from FreeBSD port ( Chapter 2 ) 或通过其他已发布的方法也包含 vmci


您是否测试了 VMCI 在 QNX 端与纯 C(不带 ZeroMQ)的 VMware Workstation 的工作?

May enjoy a few scenarios to test and POSACK / NACK the QNX / VMware Workstation vmci-RTO state.


最后但并非最不重要的一点

VM 必须获得适当的权限才能使用 VMCI 服务,否则主机/隔离将占据主导地位:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2017-12-20
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多