ZeroMQ接口函數之 :zmq_send – 在一個socket上發送一個消息幀


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

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

Name

zmq_send – 在一個socket上發送一個消息幀

Synopsis

int zmq_send (void *socket, void *buf, size_t len, int flags);

Description

zmq_send()函數會根據buf參數指定的內存緩沖區和len參數指定的緩沖區數據長度創建一個消息,並將消息添加到消息隊列中。flags參數是由下面的標志組合成的。

  ZMQ_DONTWAIT

    對於當socket不可使用就要執行阻塞方式的socket類型來說(DEALER,PUSH),此選項可以指定這個操作以非阻塞模式執行。如果無法添加消息到socket的消息隊列上,zmq_send()函數將會執行失敗並設置errno為EAGAIN。

  ZMQ_SNDMORE

    指出當前正在發送的消息是個多幀消息,並且接下來還會發送更多的消息。請參考下面關於多幀消息的段落,獲取更多的細節。

成功的調用zmq_send()函數並不能說明消息已經被成功的發送到了網絡上,只能說明消息被添加到了這個socket的消息隊列上,並且ZMQ開始對其負責。

Multi-part messages

一個ZMQ消息由1個或多個ZMQ消息幀組成。ZMQ保證自動交付消息:一個ZMQ的消息要么所有的消息幀都被接收,要么一個都不會接收。一個消息中消息幀的總數沒有限制,除非內存不夠用。

當一個應用程序在發送多針消息的時候,出了最后一幀消息,其它的所有消息必須使用ZMQ_SNDMORE進行注明。

Return value

當zmq_send()函數執行成功時會返回發送的消息的字節數。否則返回 -1,並且設置errno的值為下列定義的值。

Errors

  EAGAIN

    函數正在使用非阻塞模式發送消息,並且socket當前不可用。

  ENOTSUP

    這個scoket的類型不支持zmq_send()函數的操作。

  EFSM

    zmq_send()函數當前無法對這個socket進行操作,因為這個socket處在與此操作不適當的狀態。這個錯誤可能出現在那些在幾種狀態之間進行切換的socket上,比如ZMQ_REP。請參照zmq_socket(3)函數部分的消息模式部分以獲取更多信息。

  ETERM

    與給定的socket向關聯的context被終結了。

  ENOTSOCK

    參數提供的socket不可用。

  EINTR

    此次操作被系統信號中斷了。

  EHOSTUNREACH

    此消息不能被路由。

Example

  發送一個多幀消息

/* Send a multi-part message consisting of three parts to socket */ rc = zmq_send (socket, "ABC", 3, ZMQ_SNDMORE); assert (rc == 3); rc = zmq_send (socket, "DEFGH", 5, ZMQ_SNDMORE); assert (rc == 5); /* Final part; no more parts to follow */ rc = zmq_send (socket, "JK", 2, 0); assert (rc == 2);

See also

zmq_send_const(3)  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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM