Server端:
#include <assert.h>
#include <iostream>
#include <tchar.h>
#include <zmq.h>
using namespace std;
#pragma comment(lib,"libzmq.lib")
void main(int argc,TCHAR*argv[])
{
void *ctx;
ctx = zmq_init(1);
assert(ctx);
void *s;
s = zmq_socket(ctx,ZMQ_REP);
assert(s);
int rc;
rc = zmq_bind(s,"tcp://127.0.0.1:5555");
assert(0 == rc);
zmq_msg_t query,resultset;
const char *query_string,*resultset_string = "ok";
while(1)
{
rc = zmq_msg_init(&query);
assert(0 == rc);
rc = zmq_recv(s,&query,0);
assert(0 == rc);
query_string = (const char*)zmq_msg_data(&query);
cout<<"recv: "<<query_string<<endl;
zmq_msg_close(&query);
rc = zmq_msg_init_size(&resultset,strlen(resultset_string)+1);
assert(0 == rc);
memcpy(zmq_msg_data(&resultset),resultset_string,strlen(resultset_string)+1);
rc = zmq_send(s,&resultset,0);
assert(0 == rc);
zmq_msg_close(&resultset);
}
}
Client端:
#include <assert.h>
#include <iostream>
#include <tchar.h>
#include <zmq.h>
using namespace std;
#pragma comment(lib,"libzmq.lib")
void main(int argc,TCHAR*argv[])
{
void *ctx;
ctx = zmq_init(1);
assert(ctx);
void *s;
s = zmq_socket(ctx,ZMQ_REQ);
assert(s);
int rc;
rc = zmq_connect(s,"tcp://127.0.0.1:5555");
assert(0 == rc);
zmq_msg_t senddata,recvdata;
const char *senddata_string = "client send data",*recvdata_string;
//send data
rc = zmq_msg_init_size(&senddata,strlen(senddata_string)+1);
assert(0 == rc);
memcpy(zmq_msg_data(&senddata),senddata_string,strlen(senddata_string)+1);
rc = zmq_send(s,&senddata,0);
assert(0 == rc);
zmq_msg_close(&senddata);
//recv data
rc = zmq_msg_init(&recvdata);
assert(0 == rc);
rc = zmq_recv(s,&recvdata,0);
assert(0 == rc);
recvdata_string = (const char*)zmq_msg_data(&recvdata);
cout<<"recv:"<<recvdata_string<<endl;
zmq_msg_close(&recvdata);
zmq_close(s);
zmq_term(ctx);
}