zmq与czmq使用client-server模式通信

 前言:最好的方法还是配套使用,zmq与zmq,czmq与czmq;但总有特殊需求,需要你用czmq作为client,zmq作为server,那么,下面的代码可以作为参考:

//czmqclient.c

#include <czmq.h>
int main (void)
{

    void *context = zmq_init(1);
    void *requester = zmq_socket (context, ZMQ_REQ);
    int nRet = zmq_connect (requester, "tcp://localhost:5555");
    printf("zmq_connect: %d\r\n",nRet);

    char buffer [10];
    zmq_msg_t msg;
    zmq_msg_init_size(&msg, 128);
    const char * sz = "i am czmq client!";
    memcpy(zmq_msg_data(&msg), sz, strlen(sz));

    zmq_msg_send(&msg, requester, 0);
    zmq_msg_recv(&msg, requester, 0);
    printf ("Received : %s\r\n", (char*)zmq_msg_data(&msg));

    zmq_close (requester);
    return 0;
}
//zmqserver.cpp

#include <string.h>
#include <unistd.h>
#include <iostream>
#include <zmq.h>

using std::cout;
using std::endl;
using std::cin;

int main() {

    void *context = zmq_init(1);
    void * socket = zmq_socket (context, ZMQ_REP);
    zmq_bind(socket, "tcp://*:5555");

    cout << "Server is starting..." << endl;
    while (true) {
        //socket.recv(&message);
        /* Create an empty ØMQ message */
        zmq_msg_t msg;
        int rc = zmq_msg_init_size (&msg, 128);
        /* Block until a message is available to be received from socket */
        rc = zmq_msg_recv (&msg, socket, 0);
        cout << "Come from client." << (char*)zmq_msg_data(&msg)<<endl;

        // do some work
        sleep(1);

        const char * sz = "i am zmq server!";
        memcpy(zmq_msg_data(&msg), sz, strlen(sz));

        zmq_msg_send(&msg, socket, 0);
        
    }
    return 0;
}
gcc -o czmqclient czmqclient.c -lzmq -lczmq -L/usr/local/lib
g++ zmqserver.cpp -o zmqserver -lzmq  -L/usr/local/lib

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值