zeromqの使用(windows)
3787 ワード
注:Windowsプラットフォームの使用について
1.公式サイトのダウンロードソース:http://zeromq.org/intro:get-the-software
stable release is v 4をダウンロードします.1.6
2.vs 2013はlibライブラリとdllのコンパイルを行う(libzmqエンジニアリングのみコンパイル可能)
パスが見つかりました:zeromq-4.1.6buildsmsvcvs 2013、vs 2013でlibzmqを開きます.sln.
libzmqを直接コンパイルすると、エラーが発生します.
LINK : fatal error LNK1104: cannot open file 'libsodium.lib'
libsodiumをリンクしないように設定します.
コンパイルに成功しました.コンパイルされたファイル(win 32 Releasewei)はzeromq-4.1.6binWin 32Releasev 120dynamicの下にあります.
3.実戦
libファイルとヘッダファイルzmq.h、zmq_utils.h導入工事
(1)発行
(2)購読
API:https://www.cnblogs.com/fengbohello/p/4230135.html
1.公式サイトのダウンロードソース:http://zeromq.org/intro:get-the-software
stable release is v 4をダウンロードします.1.6
2.vs 2013はlibライブラリとdllのコンパイルを行う(libzmqエンジニアリングのみコンパイル可能)
パスが見つかりました:zeromq-4.1.6buildsmsvcvs 2013、vs 2013でlibzmqを開きます.sln.
libzmqを直接コンパイルすると、エラーが発生します.
LINK : fatal error LNK1104: cannot open file 'libsodium.lib'
libsodiumをリンクしないように設定します.
コンパイルに成功しました.コンパイルされたファイル(win 32 Releasewei)はzeromq-4.1.6binWin 32Releasev 120dynamicの下にあります.
3.実戦
libファイルとヘッダファイルzmq.h、zmq_utils.h導入工事
(1)発行
// pub.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include"zmq.h"
#include"zmq_utils.h"
int main() {
void *context = zmq_ctx_new();
void *publisher = zmq_socket(context, ZMQ_PUB);
zmq_bind(publisher, "tcp://*:9998");
char sendbuf[64] = {0};
int cnt = 0;
while (cnt < 1000)
{
sprintf_s(sendbuf, "msg ----%d", cnt++);
std::cout << "msg ----" << cnt << std::endl;
zmq_send(publisher, sendbuf, strlen(sendbuf), 0);
Sleep(1000);
}
std::cout << "publisher over!" << std::endl;
zmq_close(publisher);
zmq_ctx_destroy(context);
getchar();
return 0;
}
(2)購読
// sub.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include"zmq.h"
#include"zmq_utils.h"
int main(void)
{
void *context = zmq_ctx_new();
void *subscriber = zmq_socket(context, ZMQ_SUB);
zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, "", 0);
zmq_connect(subscriber, "tcp://127.0.0.1:9998");
while(1)
{
char recvbuf[64] = {0};
int ret = zmq_recv(subscriber, recvbuf, 64, ZMQ_DONTWAIT);//ZMQ_DONTWAIT zmq_recv
if (ret == -1)
{
if (errno == EAGAIN) continue;
else
{
std::cout << " "<< std::endl;
break;
}
}
std::cout << recvbuf << std::endl;
}
zmq_close(subscriber);
zmq_ctx_destroy(context);
getchar();
return 0;
}
API:https://www.cnblogs.com/fengbohello/p/4230135.html