ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_msg_send

zmq_msg_send(3)     ØMQ Manual - ØMQ/3.2.5

Name

zmq_msg_send – 从一个socket发送一个消息帧

Synopsis

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

Description

zmq_msg_send函数和zmq_sendmsg(3)函数是完全相同的,只是zmq_sendmsg(3)在以后的版本中会被弃用。zmq_msg_send()函数在操作性方面和其他消息函数更有一致性。

zmq_msg_send()函数将会使用socket指定的socket,以队列方式(FIFO)将msg参数指定的消息添加到发送队列里面。flags参数由下列标志组合(|)而成:

  ZMQ_DONTWAIT

    指明本次操作使用非阻塞方式执行。如果这个消息不能被添加到哦消息队列里面,zmq_msg_send()函数会执行失败,并设置errno的值为EAGAIN.。

  ZMQ_SNDMORE

    指明正在被发送的消息是个多帧消息,并且后面还有更多的消息会进行发送。参见下面关于多帧消息的章节,以获取更详细的信息。

在调用zmq_msg_send()函数的时候,消息结构zmq_msg_t是失效的。如果想把消息发送给多个socket,需要调用复制函先数复制这个消息(比如zmq_msg_copy()函数)。

注意:调用zmq_msg_send()成功并不意味着消息已经成功得发送到网络上了,只能说明消息已经添加到消息队列,ZMQ会确保消息的发送。

多帧消息(Multi-part messages 具体怎么翻译我也不会。。。)

一个ZMQ消息是由1个或多个帧组成的。每个消息段都是一个对立的zmq_msg_t消息结构。ZMQ确保对消息进行原子交付:每个socket或者接收整个消息,或者一个消息帧也不接收。每个消息中的帧数是不受限制的,除非内存不够用了。

除了发送最后一帧消息,应用进程每次发送消息时必须使用ZMQ_SNDMORE标志以发送多帧消息。

Return value

如果zmq_msg_send()函数执行成功则返回消息中数据的长度。否则返回 -1,并且设置errno的值为下列值。

Errors

  EAGAIN

    在使用非阻塞模式发送消息的时候此消息不可用。

  ENOTSUP

    zmq_msg_send()函数不支持此socket的类型。

  EFSM

    当socket处在不正确的状态时,zmq_msg_send()操作无法执行。这中情况可能发生在一个socket在集中状态间切换的时候,比如ZMQ_REP。请查看zmq_socket(3) 函数的消息模式章节获得更多信息。

  ETERM

    和socket相联系的ZMQ context被终结了。

  ENOTSOCK

    参数提供的socket不可用。

  EINTR

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

  EFAULT

    参数提供的消息不可用。

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_msg_send (&msg, socket, ); assert (rc == );

  发送一个多帧消息

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

See also

zmq_recv(3) zmq_send(3) zmq_msg_recv(3) zmq_socket(7) zmq(7)

Authors

This ØMQ manual page was written by Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <mato@kotelna.sk>, and Pieter Hintjens <ph@imatix.com>.

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_msg_send – 从一个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_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_ ...

  3. ZeroMQ接口函数之 :zmq_connect - 由一个socket创建一个对外连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_connect zmq_connect(3)  ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...

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

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

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

  6. ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性

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

  7. ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7)          ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...

  8. ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议

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

  9. ZeroMQ接口函数之 :zmq_inproc – ØMQ 本地进程内(线程间)传输方式

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

随机推荐

  1. kindeditor在光标处插入编辑器外的数据

    页面 <div class="form-group clearfix"> <label class="control-label col-sm-3 co ...

  2. System.Properties和System.getenv区别

    网上很多使用的是getProperties.说获得系统变量,但是其实不正确.getProperties中所谓的"system properties"其实是指"java s ...

  3. 最终解决 mouseenter, mouseleave , mouseout mousehover mousemove等事件的区别?

    在jquery中, html页面的div的显示和隐藏, 修改等的功能, 最终都要由 事件 触发来引用, 不管是键盘事件, 还是鼠标事件... mouseenter和mouseleave是成对对应的, ...

  4. Xshell个性化设置,解决Xshell遇到中文显示乱码的问题

    在同事的推荐下,今天开始使用Xshell连接Linux,但是发现一个“遇到中文显示乱码”的问题, 同事的解决方案如下: 平常给Linux上传文件之前,先把文件转换成UTF-8编码形式, 然后设置Xsh ...

  5. JAVA设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  6. java基础 字符串 “==” 和 “equals” 比较

    demo: public class TestStringEquals { public static void main(String[] args) { String a = "test ...

  7. iOS开发——高级篇——远程音频、视频播放

    一.远程音频播放(<AVFoundation/AVFoundation.h>) #import <AVFoundation/AVFoundation.h> /** 播放器 */ ...

  8. 安装第三方模块方法和requests

    如何安装第三方模块 pip3         pip3 install xxxx          源码         下载,解压         进入目录 python setup.py inst ...

  9. js跨域解决方案(转载)

    1.什么是跨域 我们经常会在页面上使用ajax请求访问其他服务器的数据,此时,客户端会出现跨域问题. 跨域问题是由于javascript语言安全限制中的同源策略造成的. 简单来说,同源策略是指一段脚本 ...

  10. PE440

    一些证明,推荐复制入atom观看 首先我们考虑这个T(n)是什么,我们可以列出递归式: (definition:T) T(0) = 1 T(1) = 10 T(n) = 10*T(n-1) + T(n ...