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 - ...
随机推荐
- 安卓3D游戏-神奇宝贝防御战
我和同学用unity引擎做的,作为软件工程的大作业. 是一个花费金钱抓怪.控制怪物站位.击杀进攻的敌人获得金钱的类似塔防的安卓游戏. 下载地址:http://pan.baidu.com/s/1gdpH ...
- 项目里面的某个.m文件无法使用
- 检查:Build Phases -> Compile Sources
- Tools
Database: Online Schema Tool: http://dbdsgnr.appspot.com/ Orcale --> SQL developer MySQL--> To ...
- JavaScript类型判断instanceof与typeof对比
经常有人会在JavaScript里写如下的方法: function checkType() { var s1 = 123; var s2 = "OK"; if (s1 instan ...
- Linux服务器,PHP的10大安全配置实践
PHP被广泛用于各种Web开发.而当服务器端脚本配置错误时会出现各种问题.现今,大部分Web服务器是基于Linux环境下运行(比如:Ubuntu,Debian等).本文例举了十大PHP最佳安全实践方式 ...
- Alpha版本十天冲刺——Day 10
站立式会议 最后一天,很高兴我们做出了跟预期差不多的版本,实现了基本功能,虽然还有一些bug,但是下一阶段我们会继续加油! 会议总结 队员 今天完成 遇到的问题 感想 鲍亮 功能细节更改 我的手机运行 ...
- Reader与InputStream两个类中的read()的区别
InputStream类的read()方法是从流里面取出一个字节,他的函数原型是 int read(); ,Reader类的read()方法则是从流里面取出一个字符(一个char),他的函数原型也是 ...
- BZOJ3436——小K的农场
1.题意:大概是给一些制约限制,问是否存在合法解 2.分析:我们来观察这三个限制 农场a比农场b至少多种植了c个单位的作物 可以变成b 比 a至多多种了-c 农场a比农场b至多多种植了c个单位 ...
- Add Two Numbers LeetCode Java
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- Android 双击 Back 键退出程序
双击退出程序的原理无非就是设置一个退出标识(询问是否退出),如果改变了这个标识(确认退出),则再次点击时立马退出,如果短时间内没有退出,则延时重置这个标识(不退出). ================ ...