ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_recv

zmq_msg_recv(3)     ØMQ Manual - ØMQ/3.2.5

Name

zmq_msg_recv - 从一个socket中接受一个消息帧

Synopsis

int zmq_msg_recv (zmq_msg_t *msg, void *socket, int flags);

Description

zmq_msg_recv()函数和zmq_recvmsg(3)函数是完全相同的,但是zmq_recvmsg(3)函数将在以后的版本中被丢弃。zmq_msg_recv()函数和其它的函数更符合一些。

zmq_msg_recv()函数将会从socket参数指定的的socket中读取消息帧,并存储在msg参数指定的ZMQ消息结构间中。以前存储在消息msg中的内容会被准确的释放。如果此刻,在socekt参数指定的的socket上没有消息可以接收,zmq_msg_recv()会进入阻塞状态,直到其请求被满足为止。flags参数是下列一些标志的组合。

  ZMQ_DONTWAIT

    指定本次操作以非阻塞模式进行。如果在指定的socket上没有消息可以接收,zmq_msg_recv()函数将会执行失败,并设置errno的值为EAGAIN。

  多部分消息(Multi-part messages)

    一个ZMQ消息是由1个或多个段组成的。每个消息段都是一个对立的zmq_msg_t消息结构。ZMQ确保对消息进行原子交付:每个socket或者接收整个消息,或者一个消息段也不接收。每个消息中的段数是不受限制的,除非内存不够用了。

对于执行多分段消息的进程,每次在执行zmq_msg_recv()后需要检测ZMQ_RCVMORE zmq_getsockopt(3)属性,以确定是否还有剩余的消息段可以接收。

Return value

如果zmq_msg_recv() 函数执行成功,会以B为单位返回消息的大小。否则返回 -1,并且设置errno的值为下列指定的值。

Errors

  EAGAIN

    以非阻塞模式接收数据执行时当前消息队列中没有消息。

  ENOTSUP

    此socket的类型不支持zmq_msg_recv()函数。

  EFSM

    由于socket当前处于不可用状态,zmq_msg_recv()函数无法对这个socket进行操作。这个错误的发成常常由于socket的类型正在几种不同的状态间转变过程中,比如ZMQ_REP。请查看zmq_socket(3)函数的消息模式章节以得到更多信息。

  ETERM

    与socket相联系的context被终结了。

  ENOTSOCK

    参数提供的socket不可用。

  EINTR

    在一个消息可以使用前,因为收到系统信号,这个操作被中断了。

  EFAULT

    参数传递给函数的消息不可用。

Example

  从一个socket接收消息

 /* Create an empty ØMQ message */
zmq_msg_t msg;
int rc = zmq_msg_init (&msg);
assert (rc == );
/* Block until a message is available to be received from socket */
rc = zmq_msg_recv (&msg, socket, );
assert (rc != -);
/* Release message */ zmq_msg_close (&msg);

  接收一个由多段组成的消息

 int64_t more;

 size_t more_size = sizeof more;

 do {

     /* Create an empty ØMQ message to hold the message part */

     zmq_msg_t part;

     int rc = zmq_msg_init (&part);

     assert (rc == );

     /* Block until a message is available to be received from socket */

     rc = zmq_msg_recv (&part, socket, );

     assert (rc != -);

     /* Determine if more message parts are to follow */

     rc = zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);

     assert (rc == );

 zmq_msg_close (&part); 

 } while (more);

See also

zmq_recv(3) zmq_send(3) zmq_msg_send(3) zmq_getsockopt(3) zmq_socket(7) zmq(7)

Authors

This man page was written by Martin Sustrik <sustrik@250bpm.com>, Martin Lucina <martin@lucina.net>, and Pieter Hintjens <ph@imatix.com>.

Web site design and content is copyright (c) 2007-2012 iMatix Corporation. Contact us for professional support. Site content licensed under the Creative Commons Attribution-Share Alike 3.0 License. ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ, ZeroMQ, and 0MQ are trademarks of iMatix Corporation. Terms of Use — Privacy

Policy

更多 ZeroMQ API :http://www.cnblogs.com/fengbohello/p/4230135.html

翻译:风波

mail : fengbohello@qq.com

ZeroMQ接口函数之 :zmq_msg_recv - 从一个socket中接受一个消息帧的更多相关文章

  1. ZeroMQ接口函数之 :zmq_send – 在一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-send zmq_send(3)              ØMQ Manual - ØMQ/4.1.0 Name ...

  2. ZeroMQ接口函数之 :zmq_msg_more - 指出是不是还有更多的消息部分可以接收

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_more zmq_msg_more(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...

  3. ZeroMQ接口函数之 :zmq_msg_size - 以字节为单位返回消息内容的大小

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_size zmq_msg_size(3)  ØMQ Manual - ØMQ/3.2.5 Name zmq ...

  4. ZeroMQ接口函数之 :zmq_z85_encode – 使用Z85算法对一个二进制秘钥进行加密,输出可打印的文本

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq-z85-encode zmq_z85_encode(3)          ØMQ Manual - ØMQ/4. ...

  5. ZeroMQ接口函数之 :zmq_recvmsg – 从一个socket上接收一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-recvmsg zmq_recvmsg(3)         ØMQ Manual - ØMQ/4.1.0 Nam ...

  6. ZeroMQ接口函数之 :zmq_recv – 从一个socket上接收一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_recv zmq_recv(3)        ØMQ Manual - ØMQ/4.1.0 Name zmq_r ...

  7. ZeroMQ接口函数之 :zmq_sendmsg – 从一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg zmq_sendmsg(3)        ØMQ Manual - ØMQ/4.1.0 Name ...

  8. ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  9. ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

随机推荐

  1. vtkAnimationCue、vtkCommand和vtkAVIWriter

    1. 用vtkAnimationCue自定义一个vtkCustomAnimationCue类,用来实现球体逐渐张开的过程: 2.用vtkCommand自定义衍生一个vtkCustomAnimation ...

  2. Android-修改TabWidget字体大小颜色及对齐

    在Android中,我们可以定义TabWidget来分页.在上一篇文章中有说到使用TabWidget定义Tab分页布局,但大部分用户可能会觉得默认的字体有点小,但Tab选项卡默认又不能设定字体大小,如 ...

  3. ReactiveCocoa源码拆分解析(二)

    (整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上面抽丝剥茧的把最主要的信号机制给分离开了.但在RA ...

  4. PCA本质和SVD

    一.一些概念 线性相关:其中一个向量可以由其他向量线性表出. 线性无关:其中一个向量不可以由其他向量线性表出,或者另一种说法是找不到一个X不等于0,能够使得AX=0.如果对于一个矩阵A来说它的列是线性 ...

  5. C和指针 第五章 习题

    下列输出的值: #include <stdio.h> int func(){ static int count = 1; return ++count; } int main() { in ...

  6. Android编程容易犯的错误之二

    11.不要太相信工具,比如Eclipse里面的断点遇到多线程什么,经常不起作用/走不到,还有就是如果语句为空的也不会走,这时候别太早下结论断点地方出错了, 所以每个工程都应该有日志的开关,通过查看日志 ...

  7. Excel 导出

    admin = Context.Request.Cookies["user"].Values["username"].ToString();           ...

  8. OF寄存器的判断

      1000 0000 ADD  1100 0000  10 1:符号位是否有进位  有则为1 2:最高有效数值位是否向符号位产生进位  有则为1 1 XOR 0=1所以PF=1

  9. ImageView的scaleType详解

    ImageView的ScaleType详 1. 网上的误解 不得不说很失望,到网上搜索了几篇帖子,然后看到的都是相互复制粘贴,就算不是粘贴的,有几篇还是只是拿着自己的几个简单例子,然后做测试,这种以一 ...

  10. 与你相遇好幸运,aglio写接口文档

    npm install -g aglio npm i aglio-theme-minimal aglio --theme-full-width -t minimal -i ./src/index.md ...