首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZeroMQ模式查询

ZeroMQ模式查询
EN

Stack Overflow用户
提问于 2013-04-29 18:06:53
回答 2查看 701关注 0票数 2

我想使用ZeroMQ (http://zeromq.org/)在C++中实现服务器/客户端交互。

我的需求是实现一个函数,其中如果客户端向服务器发送请求,则服务器应将多个数据片段(按顺序)发送回客户端。客户端应该能够重复发送请求,而服务器在每次请求时都会使用多个数据进行回复。

ZeroMQ规定了req-res、pub-sub、push-pull等模型,但这不支持我的需求,因为:

1) Req-rep模式总是期望返回消息,即它被设计为发送和接收的组合

2) pub-sub和push-pull是单向的

哪种ZeroMQ模式适合我的需求,哪种协议更好?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-04-29 18:17:57

看看ZMQ的经销商-路由器架构:http://www.zeromq.org/tutorials:dealer-and-router

您应该能够寻址特定的客户端,而不必遵守严格的请求回复类型消息流。

票数 1
EN

Stack Overflow用户

发布于 2013-04-29 23:19:36

完全异步的方法如下所示。

客户端

让你的客户使用发牌商插座。连接到您的服务器路由器。

当您发送请求时,发送(k, v),其中k是惟一的(在此客户端上下文中)请求键,v是您正在执行的任何操作的实际请求数据。

监听同一个DEALER套接字上的传入消息。期望得到如下的消息序列:

  • (k, START)
  • (k, (0, 10), A[0..9])
  • (k, (10, 8), A[10..17])
  • (k, (18, 2), A[18..19])
  • (k, END)

服务器端

使您的服务器使用路由器插座。绑定它。

侦听[sender, (k, v)]格式的传入消息。

发回一系列类似以下内容的消息:

  • [sender, (k, START)]
  • [sender, (k, (0, 10), A[0..9])]
  • [sender, (k, (10, 8), A[10..17])]
  • [sender, (k, (18, 2), A[18..19])]
  • [sender, (k, END)]

我使用方括号表示ZMQ多部分消息,使用圆括号表示元组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16276002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档