我在C中的QNX 6.6 Neutrino虚拟机上一直在搞乱ZMQ。只是一些简单的req-rep和pub-sub程序。我已经将这些工作只用于一个VM并在其自己的进程中运行每个程序。
//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来托管VM。 我的libzmq版本是4.2.0。
感谢您的帮助。 :)
答案 0 :(得分:1)
除了源代码中从tcp:
到 vmci:
的交换之外。
vmci://
还需要知道(接收)来自VM-hypervisor的 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 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.