ZeroMQ学习 (四)请求-应答模式
2018-03-04 11:22
218 查看
6 请求-应答模式
请求-应答模式,REQ-REP必须同步的进行,即,REQ套接字必须先发送请求,然后等待应答;REP必须先接受请求,然后发送应答。一旦打乱这个顺序,将造成错误,套接字将无法继续工作。请求端源码request.cpp:#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main (void)
{
void *context = zmq_ctx_new();
void *requster = zmq_socket (context, ZMQ_REQ);
zmq_connect (requster, "tcp://127.0.0.1:5555");
int ret;
while (1)
{
zmq_send (requster, "hello", 5, 0);
sleep (1);
char buf[256];
ret = zmq_recv (requster, buf, sizeof(buf) - 1, 0);
buf[ret] = '\0';
printf ("recv msg %s\n", buf);
}
// 程序不会运行到这里,以下只是演示我们应该如何结束
zmq_close (requster);
zmq_ctx_destroy(context);
return 0;
}编译命令:g++ request.cpp -lzmq -o request应答端源码response.cpp:#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main (void)
{
void *context = zmq_ctx_new();
// 与客户端通信的套接字
void *responder = zmq_socket (context, ZMQ_REP);
zmq_bind (responder, "tcp://*:5555");
int ret;
while (1)
{
// 等待客户端请求
char buf[256];
/*返回值代表读到的字节个数,失败返回-1并且设置errno*/
ret = zmq_recv (responder, buf, sizeof(buf) - 1, 0);
buf[ret] = '\0';
printf ("recv msg %s\n", buf);
sleep (1);
// 返回应答
memcpy (buf, "World", 5);
zmq_send (responder, buf, 5, 0);
}
// 程序不会运行到这里,以下只是演示我们应该如何结束
zmq_close (responder);
zmq_ctx_destroy(context);
return 0;
}
g++ response.cpp -lzmq -o response 1. 可以看到,服务器与客户端依次打印,并且多开客户端的时候,服务器也能够通过一个zmq的套接字正常处理多个客户端的请求。 2. 服务器没有启动的时候,启动客户端也不会出错,ZMQ会自动帮你重新连接。 3. 原生套接字的常见问题,例如socket关闭后读写的问题,ZMQ都已经封装到API中。
相关文章推荐
- Python实现ZeroMQ请求-应答模式
- ZeroMQ指南:第3章:高级请求-应答模式
- ZeroMQ指南:第3章:高级请求-应答模式
- [老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向
- CZMQ之可靠的请求-应答模式
- WCF面向服务应用程序系列之十六:消息交换模式(MEP)-请求/应答操作
- WCF服务创建与使用(请求应答模式)
- AJAX学习笔记之 客户端请求方式 get 和post 模式
- Spring MVC 学习笔记3 - 利用Default Annotation 模式获取请求,使Controller与View对应,并传值。
- C#WINFORM使用请求应答模式做登陆检查
- WCF学习之旅—请求与答复模式和单向模式(十九)
- ZeroMQ之模式 请求回应模型(Request-Reply)
- ActiveMQ请求和应答模式
- ZeroMQ学习 (三)核心消息模式
- Redis 请求应答模式和往返延时 Pipelining
- ZeroMQ的ZMQ_STREAM模式写的服务器反向先发请求的示例代码
- 【java-activemq】 请求应答模式
- ZeroMQ学习 (五)发布-订阅模式
- 【ActiveMQ】ActiveMQ请求和应答模式
- ZeroMQ指南:第4章:可靠的请求-应答