ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg

zmq_sendmsg(3)        ØMQ Manual - ØMQ/4.1.0

Name

zmq_sendmsg – 从一个socket上发送一个消息帧

Synopsis

int zmq_sendmsg (void *socket, zmq_msg_t *msg, int flags);

Description

zmq_sendmsg()函数会把msg参数指定的消息对象添加到socket参数指定的socket上,等待将其发送。flags参数是由下列flag组合成的。

  ZMQ_DONTWAIT

    此选项适用于当socket没有链接到另一端而使操作进入阻塞模式的socket类型(DEALER,PUSH),指定操作以非阻塞模式执行。当消息无法添加到指定的socket的队列上时,函数zmq_sendmsg()执行失败并设置errno的值为EAGAIN。

  ZMQ_SNDMORE

    指定当前要发送的消息是一个多帧消息的其中以帧,并且此消息后还会有更多的消息帧要进行发送。参见下面关于多帧消息的章节以获取更多信息。

使用zmq_sendmsg()函数发送消息的,被发送的zmq_msg_t结构体是无效的。如果你想要把这个消息发送给多个socket,你需要使用zmq_msg_copy()等函数复制一份。

成功调用了zmq_sendmsg()并不意味着消息已经成功发送到了网络上,只能说明消息已经添加到了socket的消息队列中,并且由ZMQ开始接管这个消息。
这个API已经废弃了,推荐使用zmq_msg_send()函数。

Multi-part messages

一个ZMQ消息由1个或多个ZMQ消息帧组成。ZMQ保证自动交付消息:一个ZMQ的消息要么所有的消息帧都被接收,要么一个都不会接收。一个消息中消息帧的总数没有限制,除非内存不够用。

当应用程序在发送多帧消息的时候,出了最后一次发送消息帧,每一次都要使用ZMQ_SNDMORE参数。

Return value

如果zmq_sendmsg()函数执行成功返回发送的消息字节数。否则返回 -1, 并且设置errno的值为下列定义的值。

Errors

  EAGAIN

    使用非阻塞模式进行操作,并且当前这个消息不可用。

  ENOTSUP

    socket类型不支持zmq_sendmsg()函数的操作。

  EFSM

    由于socket当前处于不适当的状态,导致zmq_sendmsg()函数的操作无法进行。这个错误可能出现在经常在几种状态间进行切换的socket类型上,比如ZMQ_REP。参见zmq_socket(3)函数中的消息模式章节以获取更多信息。

  ETERM

    与socket相联系的context被终结了。

  ENOTSOCK

    参数提供的socket不可用。

  EINTR

    此次操作在消息发送之前被系统信号中断了。

  EFAULT

    参数提供的消息不可用。

  EHOSTUNREACH

    这个消息无法被路由。

Example

  创建一个消息并发送出去

/* Create a new message, allocating 6 bytes for message content */
zmq_msg_t msg;
int rc = zmq_msg_init_size (&msg, );
assert (rc == );
/* Fill in message content with 'AAAAAA' */
memset (zmq_msg_data (&msg), 'A', );
/* Send the message to the socket */
rc = zmq_sendmsg (socket, &msg, );
assert (rc == );

  发送一个多帧消息

/* Send a multi-part message consisting of three parts to socket */
rc = zmq_sendmsg (socket, &part1, ZMQ_SNDMORE);
rc = zmq_sendmsg (socket, &part2, ZMQ_SNDMORE);
/* Final part; no more parts to follow */
rc = zmq_sendmsg (socket, &part3, );

See also

zmq_recv(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 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_sendmsg – 从一个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_send_const – 从一个socket上发送一个固定内存数据

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

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

  4. ZeroMQ接口函数之 :zmq_recvmsg – 从一个socket上接收一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-recvmsg zmq_recvmsg(3)         ØMQ Manual - ØMQ/4.1.0 Nam ...

  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_setsockopt –设置ZMQ socket的属性

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html 本文地址 :http://www.cnblogs.com/fengbo ...

随机推荐

  1. 原生JS常用代码汇总

    数组相关 var codes = new Array( ); //创建数组codes.length //数组长度 动态插入数组 codes.push(value);

  2. 1JavaEE应用简介----青软S2SH(笔记)

    这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...

  3. git版本控制管理实践-3

    git -m 和git -a -m(-am) . 的区别? usally two steps to commit files to respository: first, git add somefi ...

  4. R中的<-和=赋值符号的细致区别

    <-创建的变量的作用范围可以在整个顶层环境,而=仅仅在一个局部环境. 但要<-创建的变量如果是在函数实参传递的时候创建的,其的作用范围可以在整个顶层环境,有一个前提条件:对应的形参在函数内 ...

  5. Node.js Stream-进阶篇

    作者:美团点评技术团队链接:https://zhuanlan.zhihu.com/p/21681115来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 上篇(基础篇)主要 ...

  6. bzoj1003 物流运输

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  7. [Linux & SVN] SVN介绍及Linux下SVN命令收录

    1. SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移 ...

  8. Windows10更新提示语言不同不能保留程序和设置

    打开注册表编辑器(Win+R,输入regedit)定位到: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\Language 在右边窗口中拉到最 ...

  9. linux常用命令-帮助命令man,whatis,apropos,info,help

    man 命令 man 配置文件,注意这里只需要写文件名称就可以了,不能写文件的绝对路径 man既可以查看命令的帮助信息也可以查看配置文件的帮助信息,如果内容太多,可以输入"/内容" ...

  10. 面向对象(五)super

    super方法只是为了执行继承父级的init方法,若要详细,请参考别人的博客 class a(object): def __init__(self): print("aINIT") ...