无线电广播永远不会将您的声音传送到主站
是的,ZeroMQ PUB/SUB
Scalable Formal Communication Pattern 的原型的两个部分都是单向的(根据定义),一个可以.send()
,另一个可以只听(如果配置得当,它们会)。
如何做你所要求的?(......忘记使用这个pgm://
)
是的,有一些方法可以为此使用其他 ZeroMQ 原型 - 即PAIR/PAIR
端点上的单个套接字(能够同时使用.send()
和.recv()
方法)或一对(A)->--PUSH/PULL->-(B)
+(A)-<-PULL/PUSH-<-(B)
以便仅使用单向原型构建双向信令/消息传递通道.
您还需要在配置的 ZeroMQ 端点之间选择适当的传输类用于.bind()
+中。.connect()
// -------------------------------------------------------- HOST-(A)
ZMQ.Context aCONTEXT = ZMQ.context( 1 );
ZMQ.Socket aPubSOCKET = aCONTEXT.socket( ZMQ.PUB );
aPubSOCKET.setsockopt( ZMQ.LINGER, 0 );
// ----------------------
aPubSOCKET.bind( "tcp://*:8001" );
// ----------------------
// set msg = ...;
// ----------------------
aPubSOCKET.send( msg, ZMQ.NOWAIT );
// ...
// ----------------------
aPubSOCKET.close();
aCONTEXT.term();
// ----------------------
SUB 方面还有一项职责......
// -------------------------------------------------------- HOST-(B)
ZMQ.Context aCONTEXT = ZMQ.context( 1 );
ZMQ.Socket aSubSOCKET = aCONTEXT.socket( ZMQ.SUB );
aSubSOCKET.setsockopt( ZMQ.LINGER, 0 );
aSubSOCKET.setsockopt( ZMQ.SUBSCRIBE, "" );
// ----------------------
aSubSOCKET.connect( "tcp://<host_A_IP_address>:8001" );
// ----------------------
// def a msg;
// ----------------------
msg = aSubSOCKET.recv( ZMQ.NOWAIT );
// ...
// ----------------------
aSubSOCKET.close();
aCONTEXT.term();
// ----------------------