我想使用ZeroMQ (http://zeromq.org/)在C++中实现服务器/客户端交互。
我的需求是实现一个函数,其中如果客户端向服务器发送请求,则服务器应将多个数据片段(按顺序)发送回客户端。客户端应该能够重复发送请求,而服务器在每次请求时都会使用多个数据进行回复。
ZeroMQ规定了req-res、pub-sub、push-pull等模型,但这不支持我的需求,因为:
1) Req-rep模式总是期望返回消息,即它被设计为发送和接收的组合
2) pub-sub和push-pull是单向的
哪种ZeroMQ模式适合我的需求,哪种协议更好?
谢谢
发布于 2013-04-29 18:17:57
看看ZMQ的经销商-路由器架构:http://www.zeromq.org/tutorials:dealer-and-router
您应该能够寻址特定的客户端,而不必遵守严格的请求回复类型消息流。
发布于 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多部分消息,使用圆括号表示元组。
https://stackoverflow.com/questions/16276002
复制相似问题