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, 6); assert (rc == 0); /* Fill in message content with 'AAAAAA' */ memset (zmq_msg_data (&msg), 'A', 6); /* Send the message to the socket */ rc = zmq_msg_send (&msg, socket, 0); assert (rc == 6);
發送一個多幀消息
/* 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, 0);
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