壹、下載ZeroMQ
二、編譯ZeroMQ庫文件
解壓zeromq-4.0.3.zip文件,進入builds\msvc目錄,用VS打開*.sln工程文件,編譯生成解決方案。編譯完成後,會在lib目錄下生成dll和lib文件
三、編寫簡單的測試工程
用VS新建2個項目,壹個是server端,壹個是client端
將ZeroMQ源碼項目的include目錄下的兩個文件“zmq.h”,“zmq_utils.h”拷貝至自己新建的工程
將ZeroMQ源碼項目的lib目錄下的兩個文件“libzmq.dll”,“libzmq.lib”拷貝至自己新建的工程
將文件“zmq.h”,“zmq_utils.h”和“libzmq.lib”添加進自己新建的項目。
client端代碼:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include "zeroMQ/zmq.h"
#include "zeroMQ/zmq_utils.h"
int main(int argc,char** argv)
{
//zeroMQ相關變量
void * m_context;
void * m_subscriber;
char m_pubAddr[64];
m_context = zmq_init (1);
m_subscriber = zmq_socket (m_context, ZMQ_SUB);
//訂閱
char * puberIP = "127.0.0.1";
WORD puberPort = 8585;
memset(m_pubAddr,0,sizeof(m_pubAddr));
sprintf(m_pubAddr,"tcp://%s:%d",puberIP,puberPort);
//zmq_connect (m_subscriber, "tcp://localhost:5556");
zmq_connect (m_subscriber, m_pubAddr);
int ret = zmq_setsockopt (m_subscriber, ZMQ_SUBSCRIBE, NULL, 0);
while(1)
{
BYTE buf[1024] = {0};
DWORD buflen = sizeof(buf);
DWORD gotLen = zmq_recv(m_subscriber,buf,buflen,0);
printf("收到發布信息:%s\n",buf);
}
zmq_close (m_subscriber);
zmq_term (m_context);
return 0;
}
6.server端代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "zeroMQ/zmq.h"
#include "zeroMQ/zmq_utils.h"
int main(int argc,char** argv)
{
char pubLocalAddr[64] = {0};
sprintf(pubLocalAddr,"tcp://*:%d",8585);
//zeroMQ相關變量
void * m_context;
void * m_publisher;
m_context = zmq_init (1);
m_publisher = zmq_socket (m_context, ZMQ_PUB);
zmq_bind (m_publisher, pubLocalAddr);
char *msg = "1231321";
while(1)
{
DWORD sendlen = zmq_send(m_publisher,msg,strlen(msg),0);
printf("發布信息:%s\n",msg);
Sleep(1000);
}
zmq_close (m_publisher);
zmq_term (m_context);
return 1;
}