zmq_socket()

来源:互联网 发布:知乎 用的什么编辑器 编辑:程序博客网 时间:2024/05/23 19:49

Name

zmq_socket : 创建0MQ socket

Synopsis

void *zmq_socket(void *context, int type)

描述

zmq_socket(): 在一个特定的context中创建一个0MQ socket,返回一个不透明的句柄到新创建的socket中。

type: 指定socket类型。

新创建的socket初试时时未绑定的,不和任何相关联。为了建立一个信息流,socket必须首先zmq_connect()其中一个终端,或是zmq_bind();


与传统socket的不同:

传统socket提供的同步接口,要么是面向连接的可靠的字节流(SOCK_STREAM),要么是无连接不可靠的数据包(SOCK_DGRAM).

0MQ socket 是异步的,物理连接的安装和卸载,重连和有效地转发等对用户来说都是透明的,时间由0MQ自己控制。 消息会排队,当一个peer不能有效接收时。


传统socket :严格的1-1(2个peer)、N-1(多个client,一个server)、1-N(多播)。

0MQ: ZMQ_PAIR是个特例。0MQ socket 可以连接到多个终端,使用zmq_connect();同时,可以结果多个终端的信息,使用zmq_bind().  N-N的模式


线程安全:

0MQ socket不是线程安全的。 Applications MUST NOT use a socket from multiple threads except after migrating a socket from one thread to another with a "full fence" memory barrier.

Socket类型

  1. Request-reply pattern:Summary of ZMQ_REQ characteristicsCompatible peer socketsZMQ_REPZMQ_ROUTERDirectionBidirectionalSend/receive patternSend, Receive, Send, Receive, …Outgoing routing strategyRound-robinIncoming routing strategyLast peerAction in mute stateBlock
    Summary of ZMQ_REP characteristicsCompatible peer socketsZMQ_REQZMQ_DEALERDirectionBidirectionalSend/receive patternReceive, Send, Receive, Send, …Incoming routing strategyFair-queuedOutgoing routing strategyLast peerAction in mute stateDrop
    Summary of ZMQ_DEALER characteristicsCompatible peer socketsZMQ_ROUTERZMQ_REPZMQ_DEALERDirectionBidirectionalSend/receive patternUnrestrictedOutgoing routing strategyRound-robinIncoming routing strategyFair-queuedAction in mute stateBlock


    Summary of ZMQ_ROUTER characteristicsCompatible peer socketsZMQ_DEALERZMQ_REQZMQ_ROUTERDirectionBidirectionalSend/receive patternUnrestrictedOutgoing routing strategySee textIncoming routing strategyFair-queuedAction in mute stateDrop
    Summary of ZMQ_DEALER characteristicsCompatible peer socketsZMQ_ROUTERZMQ_REPZMQ_DEALERDirectionBidirectionalSend/receive patternUnrestrictedOutgoing routing strategyRound-robinIncoming routing strategyFair-queuedAction in mute stateBlock
  2. Publish-subscribe pattern : 1-N (1 publisher,multiple subscribers
  1. Summary of ZMQ_XSUB characteristicsCompatible peer socketsZMQ_PUBZMQ_XPUBDirectionUnidirectionalSend/receive patternReceive messages, send subscriptionsIncoming routing strategyFair-queuedOutgoing routing strategyN/AAction in mute stateDrop
    Summary of ZMQ_SUB characteristicsCompatible peer socketsZMQ_PUBZMQ_XPUBDirectionUnidirectionalSend/receive patternReceive onlyIncoming routing strategyFair-queuedOutgoing routing strategyN/AAction in mute stateDrop
    Summary of ZMQ_PUB characteristicsCompatible peer socketsZMQ_SUBZMQ_XSUBDirectionUnidirectionalSend/receive patternSend onlyIncoming routing strategyN/AOutgoing routing strategyFan outAction in mute stateDropSummary of ZMQ_XPUB characteristicsCompatible peer socketsZMQ_SUBZMQ_XSUBDirectionUnidirectionalSend/receive patternSend messages, receive subscriptionsIncoming routing strategyN/AOutgoing routing strategyFan outAction in mute stateDrop
  2. pipeline pattern:ZMQ_PUSH、ZMQ_PULLSummary of ZMQ_PUSH characteristicsCompatible peer socketsZMQ_PULLDirectionUnidirectionalSend/receive patternSend onlyIncoming routing strategyN/AOutgoing routing strategyRound-robinAction in mute stateBlock

Summary of ZMQ_PULL characteristicsCompatible peer socketsZMQ_PUSHDirectionUnidirectionalSend/receive patternReceive onlyIncoming routing strategyFair-queuedOutgoing routing strategyN/AAction in mute stateBlock