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. 如何处理 在html中 li 的高度自适应(且li里面的内容有浮动的情况下)

    废话不多说,我们写贴出代码 这个是 Html 代码 <div class="main"> <ul> <li> <div class=&qu ...

  2. Android-修改TabWidget字体大小颜色及对齐

    在Android中,我们可以定义TabWidget来分页.在上一篇文章中有说到使用TabWidget定义Tab分页布局,但大部分用户可能会觉得默认的字体有点小,但Tab选项卡默认又不能设定字体大小,如 ...

  3. Servlet监听器

    一.servlet的8个监听器 场景 监听者接口 事件类型 你想知道一个web应用上下文中是否增加.删除或替换了一个属性 javax.servlet.ServletContextAttributeLi ...

  4. Apple Watch版微信来了 收发微信刷朋友圈不在话下

    昨晚果粉守了一夜的Apple Watch发布会,意料中的惊喜不少,最让人兴奋的是微信成为首批支持的应用.是的,在全球拥有4.68亿月活跃用户的微信怎么可能不第一时间入驻呢?之前我们就有聊过Apple ...

  5. 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  6. PHP数组函数: array_walk()与 array_map() 的区别

    详细的介绍如下: PHP数组函数: array_walk() PHP数组函数: array_map() 实际应用中的一点区别与总结: array_walk() 主要用于对某个数组的迭代,相当于 for ...

  7. java基础 作业(一)

    题目: 跳水比赛,8个评委打分.运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,剩下的6个分数 的平均分就是最后 得分.使用以为数组实现打分功能 .请把打分最高的评委和最低的评委找出来. 解析: ...

  8. BZOJ2007——[Noi2010]海拔

    1.题意:一个裸的最小割 2.分析:直接转成对偶图最短路就好了,水爆了!(雾) #include <queue> #include <cstdio> #include < ...

  9. ORACLE简单触发器

    因工作需要,尝试写一些建议的触发器,下面为其中一例. //创建一个名为TRG_FIN_OPB_ACCOUNTCARD的触发器 create or replace trigger TRG_FIN_OPB ...

  10. NavigationController

    前面的一篇文章<iOS开发16:使用Navigation Controller切换视图>中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigati ...