zeromq请求应答(REQ/REP)

// 非线程安全

 

 

zmq_socket

void*  zmq_socket(void* context, int type);

 

   API 会根据context , type 创建一个不透明的套接字句柄.  并且是没有初始化连接的

 也没有和任何端口联系在一起,如果是客户端,这时就需要用zmq_connect 去连接到服务器

  如果是服务器,需要去用zmq_bind API去绑定端口.

   与传统套接字不同的是 ,传统套接字不是流协议,就是报文协议

   zmq 的套接字提出了 异步消息队列,并且伴随着准确的队列语义前面的实现依赖于

type,也就是不同的使用套接字类型

ZMQ传输的是无保障的消息

 

  context : 可以从 zmq_ctx_new() apI 获取

  type: 表示的是你需要创建的是何种套接字类型

 

 

type:

   请求-应答模型(ZMQ-REQ)

      该模型是被用作 从一个 客户端发送请求到一个或者是多个服务器,然后服务器对每个请求做出请求.

      如果没有服务器存在,客户端会组则直到有一个服务器变成可用状态为止,其服务器操作是 zmq_recv, zmq_send.即交替使用,很适合用于http服务器.

 

   对于客户端来说,需要先send, 再 recv

 

exqmple:

     #include <stdio.h>

#include <stdlib.h>

extern "C"

{

#include <zmq.h>

}

#pragma comment(lib,"libzmq_d.lib")

#define buffersize 4096

int main(int argccharargv[])

{

 

void * ctx = zmq_ctx_new();

void* server = zmq_socket(ctx, ZMQ_REQ);

 

zmq_connect(server, "tcp://localhost:5050");

char* buffer[256] = { 0 };

int ret = 0;

char* str = "我是客户端.....";

while (true)

{

memset(buffer, 0, 256);

zmq_send(server, str, strlen(str), 0);

zmq_recv(server, buffer, 256, 0);

printf("%s\n", buffer);

}

system("pause");

zmq_close(server);

zmq_ctx_destroy(ctx);

return 0;

}

 

ZMQ_REP模式

     该模型用于 服务器 去接受请求, 并对接受的请求做出相应的套接字模式 , 即先 recv, 再 send

 

example :

 #include <stdio.h>

#include <stdlib.h>

extern "C"

{

#include <zmq.h>

}

#pragma comment(lib,"libzmq_d.lib")

#define buffersize 4096

int main(int argccharargv[])

{

 

void * ctx = zmq_ctx_new();

void* server = zmq_socket(ctx, ZMQ_REQ);

 

zmq_connect(server, "tcp://localhost:5050");

char* buffer[256] = { 0 };

int ret = 0;

char* str = "我是客户端.....";

while (true)

{

memset(buffer, 0, 256);

zmq_send(server, str, strlen(str), 0);

zmq_recv(server, buffer, 256, 0);

printf("%s\n", buffer);

}

system("pause");

zmq_close(server);

zmq_ctx_destroy(ctx);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值