近期调研和使用 zeromq 与 cppzmq 使用中的一些问题

本文介绍了在使用zeromq和cppzmq时遇到的消息分片问题,包括如何进行消息分片的发送和接收。在发送时,通过添加标识来组合多条消息为一个完整的消息。而在接收端,需要注意使用多次recv来接收由多个帧组成的完整消息,这在实际使用中可能会带来不便。
摘要由CSDN通过智能技术生成

关于message

消息分片

消息分片的发送

消息分片允许将多个消息封装成一条消息。在发送自定义协议数据时,我们经常需要在消息前“填充”一个包头。如下代码,在发送的时候加上 zmq::send_flags::sndmore 标识(对应 zeromq ZMQ_SNDMORE),表示后面还有消息。这样 zeromq 会将 ZMQ_SNDMORE 的消息和最后一段消息拼装成一条完整的消息发送。

int SendData(char* pMsg, int iMsgLen)
{
   
    tagMsgHead stHead;
    bzero(&stHead, sizeof(stHead));
    ...
    stHead.Len = iMsgLen;
    stHead.Crc = 0;

    try
    {
   
        m_socket.send(zmq::const_buffer((const void*)(&stHead), sizeof(stHead))&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值