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); }