ZeroMQ接口函数之 :zmq_msg_recv - 从一个socket中接受一个消息帧
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中接受一个消息帧的更多相关文章
- ZeroMQ接口函数之 :zmq_send – 在一个socket上发送一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-send zmq_send(3) ØMQ Manual - ØMQ/4.1.0 Name ...
- 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_ ...
- 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 ...
- ZeroMQ接口函数之 :zmq_z85_encode – 使用Z85算法对一个二进制秘钥进行加密,输出可打印的文本
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq-z85-encode zmq_z85_encode(3) ØMQ Manual - ØMQ/4. ...
- ZeroMQ接口函数之 :zmq_recvmsg – 从一个socket上接收一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-recvmsg zmq_recvmsg(3) ØMQ Manual - ØMQ/4.1.0 Nam ...
- 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 ...
- ZeroMQ接口函数之 :zmq_sendmsg – 从一个socket上发送一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg zmq_sendmsg(3) ØMQ Manual - ØMQ/4.1.0 Name ...
- ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
随机推荐
- 【转】段错误调试神器 - Core Dump详解
from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...
- 清北学堂模拟赛day7 错排问题
/* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...
- 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料,发现很多人问到这个问题,给出的结果我试了试,大部分都不正确. 给出我试的顺序,可能会对大 ...
- saltstack-部署
安装epel源(所有主机安装) [root@salt-server /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r ...
- tomcat不安全因素
tomcat的提供了一个非常方便的manager系统,可以远程上传war项目,运行项目,但是这也是一个非常危险的地方,我曾经开发过一块B/S架构的小系统,提供了本地文件扫描,文件浏览,扫描等功能,并且 ...
- js框架设计1.2对象扩展笔记
需要一个新的功能添加到我们的命名空间上.这方法在JS中被叫做extend或者mixin,若是遍历属性用一下1.1代码,则会遍历不出原型方法,所以1.2介绍的是mass Framework里的mix方法 ...
- secureCRT会话导入到xshell中的方法
官方给出了一个工具,sessionimporter.exe 不过软件有点老了,导入的会话路径和xshell默认的会话路径不一致,导致导入后,xshell没有导入的会话信息 sessionimporte ...
- [正则表达式]PCRE反向分组引用
在常见的文本匹配场景上,经常会需要用到一些像HTML这样的嵌套标签类型的文本匹配,经过多翻折腾,拼凑出了这样的一条语句 (<([\w]+)>((?1)|[\w\s])*</\2> ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- C#设计模式之抽象工厂
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类. 抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品 当一个工厂等级结构可以创建出分属于不同产品等级结构的 ...