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. C语言基础(5)-有符号数、无符号数、printf、大小端对齐

    1.有符号数和无符号数 有符号数就是最高位为符号位,0代表正数,1代表负数 无符号数最高位不是符号位,而就是数的一部分而已. 1011 1111 0000 1111 1111 0000 1011 10 ...

  2. yaf将错误输出打印在页面上

    修改项目的配置文件 文件是conf/application.ini 添加两行代码 application.dispatcher.throwException = 1 ;开启/关闭自动异常捕获功能 ap ...

  3. java中volatile关键字的含义

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...

  4. [译]JavaScript源码转换:非破坏式与再生式

    原文:http://ariya.ofilabs.com/2013/06/javascript-source-transformation-non-destructive-vs-regenerative ...

  5. AOP基本名词解释

  6. FindWindowEx用法

    函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow): 参数 ...

  7. bash 语法使用

    1.定义函数时,不需要使用function作为函数的命名. 函数不需要形参. 函数名不能以数字作为开头 main() { in ) 1_start ;; ) 1_start 5_start ;; ) ...

  8. 及时取消代码中的AsyncTask

    在一个Activity页面,如果发起了AsyncTask任务,然后页面离开/销毁了,此时如果doInBackground没执行完,会有两个问题: 1, AsyncTask白白消耗资源,结果已经用不上了 ...

  9. Linq查询表达式

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

  10. Eclipse 的单步调试

    1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目上. 2.调试(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界面,然后先设置断点,按调试按 ...