ZeroMQ接口函数之 :zmq_recvmsg – 从一个socket上接收一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-recvmsg
zmq_recvmsg(3) ØMQ Manual - ØMQ/4.1.0
Name
zmq_recvmsg – 从一个socket上接收一个消息帧
Synopsis
int zmq_recvmsg (void *socket, zmq_msg_t *msg, int flags);
Description
函数zmq_recvmsg()会从socket参数指定的socket中接收一个消息,并将其存储在msg参数指定的消息消息对象中。所有之前存储在msg中的内容都会被适当的释放。如果socket参数指定的socket上没有接收到消息,zmq_recvmsg()函数会进行阻塞等待,直到请求被满足。flags参数由下面定义的标志组合而成。
ZMQ_DONTWAIT
指定本次操作以非阻塞模式执行。如果socket上此刻没有接收到消息,zmq_recvmsg()函数会执行失败,并设施errno的值为EAGAIN。
此API已被弃用,建议使用zmq_msg_recv()函数。
Multi-part messages
一个ZMQ消息由1个或多个ZMQ消息帧组成。每一个消息帧都是一个独立的消息对象。ZMQ保证自动交付消息:一个ZMQ的消息要么所有的消息帧都被接收,要么一个都不会接收。一个消息中消息帧的总数没有限制,除非内存不够用。
应用进程在使用多帧消息时,调用zmq_recvmsg()函数之后必须使用zmq_getsockopt(3)的ZMQ_RCVMORE选项进行检查,以确定是否还有更多的消息等待接收。
Return value
当zmq_recvmsg()函数执行成功后会返回接收到的消息字节数。否则函数返回 -1,并且设置errno的值为下列值。
Errors
EAGAIN
使用非阻塞方式接收消息时,当前socket上没有消息可用。
ENOTSUP
给定socket的类型不支持zmq_recvmsg()函数的操作。
EFSM
由于socket处在不适当的状态,zmq_recvmsg()函数无法对这个socket执行本次操作。这个错误会发生在当socket状态在几种状态间进行转变的过程中,比如ZMQ_REP类型的socket。参见zmq_socket(3)函数中关于消息模式的章节获取更多信息。
ETERM
与给定的socket相联系的context被终结了。
ENOTSOCK
参数给定的socket不可用。
EINTR
在接收到消息之前,本次操作被系统信号中断了。
EFAULT
参数指定的msg对象不可用。
Example
从一个socket上接收一个消息
/* Create an empty ØMQ message *
zmq_msg_t msg;
int rc = zmq_msg_init (&msg);
assert (rc == 0);
/* Block until a message is available to be received from socket */
rc = zmq_recvmsg (socket, &msg, );
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 == 0);
/* Block until a message is available to be received from socket */
rc = zmq_recvmsg (socket, &part, );
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_getsockopt(3) zmq_socket(7) zmq(7)
Authors
This page was written by the ØMQ community. To make a change please read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.
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 14-1-8 zmq_recvmsg(3) - 0MQ Api api.zeromq.org/4-1:zmq-recvmsg 3/3
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_recvmsg – 从一个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_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_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_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_ ...
- ZeroMQ接口函数之 :zmq_bind - 绑定一个socket
ZeroMQ 官方地址 : http://api.zeromq.org/4-0:zmq-bind zmq_bind(3) ZMQ Manual - ZMQ/3.2.5 Name zmq_bind - ...
随机推荐
- ThinkPhp 验证码不显示图片
验证码不显示原因分析: 1.先确保是否开启了 gd库 2.页面是否存在bom头 3.导入的ORG.Util.Image是否存在 4.入口文件中是否有define('APP_DEBUG', TRUE); ...
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
- 大熊君{{bb}}------春节期间你跳槽了吗?
时间过的很快,转眼间又快过春节了,推荐你在春节期间跳槽,是基于以下几个原因: 1,命中率高 通常情况下,所有公司都会在年底进行一定幅度的裁员,而惟独这家公司在招工,这等于明摆着告诉公众他们现在面临严重 ...
- [Python] 目录和文件操作
在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...
- UVALive 3644 X-Plosives
X-Plosives Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [Submit] ...
- PHP控制输出不缓存头
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); @header("Cache-Control: no-cache, ...
- javascript数据结构-数组
github博客地址 简介 数组是最简单的数据结构,javascript语言也很早就原声支持了数组Array数据类型,和其他语言略微不同的是:js中的数组可以存储不同类型的值,看起来很厉害的样子,但是 ...
- hadoop 2.6 centos 7.1 下的一些操作
开启hdfs: start-dfs.sh 开启yarn: start-yarn.sh 查看hdfs:http://ip:50070/ 查看RM:http://ip:8088/
- 【ASP.NET】利用Nuget打包package——GUI方式
GUI方式 通过GUI的方式,可以下载如下的软件 NuGetPackageExplorer 打包dll 1.打开软件,在Package Content处点击右键 ,选择Add Lib 2.在lib ...
- GET和POST
Ajax与Comet 1. Ajax Asynchronous Javascript+xml :能够向服务器请求额外的数据而无需卸载页面. Ajax技术的核心是XMLHttpRequest 对象(简称 ...