// 非线程安全
zeromq api 学习总结:
1. 返回值为void * 的, 失败是null(大多数)
2. 返回值是 int 的, 与linux c 一样, 失败为-1,成功为0(大多数)
zmq_socket
void* zmq_socket(void* context, int type);
成功返回一个不透明的套接字句柄
失败返回的就是NULL
该API 会根据context , type 创建一个不透明的套接字句柄. 并且是没有初始化连接的
也没有和任何端口联系在一起,如果是客户端,这时就需要用zmq_connect 去连接到服务器
如果是服务器,需要去用zmq_bind API去绑定端口.
与传统套接字不同的是 ,传统套接字不是流协议,就是报文协议
而zmq 的套接字提出了 异步消息队列,并且伴随着准确的队列语义, 前面的实现依赖于
type,也就是不同的使用套接字类型
而ZMQ传输的是无保障的消息
context : 可以从 zmq_ctx_new() apI 获取
type: 表示的是你需要创建的是何种套接字类型
type:
请求-应答模型(ZMQ-REQ)
该模型是被用作 从一个 客户端发送请求到一个或者是多个服务器,然后服务器对每个请求做出请求.
如果没有服务器存在,客户端会组则, 直到有一个服务器变成可用状态为止,其服务器操作是 zmq_recv, zmq_send.即交替使用
对于客户端来说,需要先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 argc, char* argv[])
{
void * ctx = zmq_ctx_new()