继 <ZMQ的学习和研究> Request-reply broker in C++

//
//Simple request-reply broker in C++
//
// Olivier Chamoux <olivier.chamoux@fr.thalesgroup.com>

#include "zhelpers.hpp"

int main (int argc,char *argv[])
{
//Prepare our context and sockets
zmq::context_t context(1);
zmq::socket_t frontend (context, ZMQ_ROUTER);
zmq::socket_t backend (context, ZMQ_DEALER);

frontend.bind("tcp://*:5559");
backend.bind("tcp://*:5560");

//Initialize poll set
zmq::pollitem_t items[] = {
{ frontend, 0, ZMQ_POLLIN, 0 },
{ backend,0, ZMQ_POLLIN, 0 }
};

//Switch messages between sockets
while (1) {
zmq::message_t message;
int more;//Multipart detection

zmq::poll (&items[0],2, -1);

if (items[0].revents& ZMQ_POLLIN) {
while (1) {
//Process all parts of the message
frontend.recv(&message);
size_t more_size = sizeof (more);
frontend.getsockopt(ZMQ_RCVMORE,&more, &more_size);
backend.send(message, more?ZMQ_SNDMORE: 0);

if (!more)
break;//Last message part
}
}
if (items[1].revents& ZMQ_POLLIN) {
while (1) {
//Process all parts of the message
backend.recv(&message);
size_t more_size = sizeof (more);
backend.getsockopt(ZMQ_RCVMORE,&more, &more_size);
frontend.send(message, more?ZMQ_SNDMORE: 0);
if (!more)
break;//Last message part
}
}
}
return0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值