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上接收一个消息帧的更多相关文章

  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_recv – 从一个socket上接收一个消息帧

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

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

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

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

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

  5. 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_ ...

  6. 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 ...

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

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

  8. 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_ ...

  9. 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 -  ...

随机推荐

  1. nginx正则表达式

    1.^:匹配字符串的开始位置: 2..*: .匹配任意字符,*匹配数量0到正无穷: 3.\. 斜杠用来转义,\.匹配.: 4.(jpg|gif|png|bmp)匹配jpg或gif或png或bmp 5. ...

  2. 白话讲MyIsam和InnoDB的区别

    "MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持"这是网上对MyISAM和InnoDB的解释,很抽象吧,我们用白话的方式解释一下其实也比较简单所谓事务处理,就是原 ...

  3. Android通过名称找图片

    开发中往往会遇到这种情况:在Drawable文件夹中有若干张相似的图片(这里的相似指的是不仅图片名称相似,用途也相似),现在要根据用户的某个操作选出其中的一张.例如,在类似微信语音功能的开发中,按住“ ...

  4. tyvj4541 zhx 提高组P1

    背景 提高组 描述 在一个N×M的棋盘上,要求放置K个车,使得不存在一个车同时能被两个车攻击.问方案数. 输入格式 一行三个整数,N,M,K. 输出格式 一行一个整数,代表答案对1000001取模之后 ...

  5. java 环境变量java_home配置多加了 \ 导致zookeeper莫名其妙问题。

    平时开发其实不太用得到java_home.path.classpath之类的环境变量,但是在命令行下运行java则需要用上,所以配错就可能出现莫名其妙错误. 错误JAVA_HOME 配置:D:\Pro ...

  6. 如何给Apache添加虚拟路径和虚拟主机?

    在本地开发,一般只用一个Apache服务器,然后通过配置文件实现多个站点访问,要么是“虚拟路径(别名)”的形式,要么是“虚拟主机”的形式,相关配置参考如下: 说明:我给Apache设置的端口为:,即  ...

  7. Spring中的JdbcTemplate使用

    1.引出SpringJDBC的概念 在学习JDBC编程时我们会感觉到JDBC的操作是多么繁琐,那么当我们学习的Hibernate框架时,我们感觉到数据库的操作也变非常简单,提高了开发效率.但是当使用H ...

  8. C和指针 第十章 结构和联合 (二)

    结构体传值: 结构体也是标量,像字符和整数一样,可以传递给一个函数,但是传入整个结构体效率很低,可以传入指向结构体的指针来提高效率.如果不希望程序对结构体变量改变可以加入const关键词. typed ...

  9. android BitMap回收

    第一种方法--及时回收bitmap内存: 一般而言,回收bitmap内存可以用到以下代码 if(bitmap != null && !bitmap.isRecycled()){ bit ...

  10. realloc的使用误区

    C语言 realloc() 函数位于 stdlib.h 头文件中,原型为: void *realloc(void *ptr, size_t size); realloc() 会将 ptr 所指向的内存 ...