标签:
1、创建一个套接字 1.1 zmq_socket(3) 1.1.1 名称zmq_socket - 创建ZMQ套接字
1.1.2 提要void * zmq_socket(void * context,int type);
1.1.3 描述zmq_socket()函数将在指定的上下文中创建一个ZMQ套接字,并向新创建的套接字返回一个不透明的句柄。 type参数指定套接字类型,它确定套接字通信的语义。
新创建的套接字最初是未绑定的,并且不与任何端点关联。为了成立动静流,套接字必需首先使用zmq_connect(3)连接到至少一个端点,或者必需创建至少一个端点以接受与zmq_bind(3)的传入连接。
1.1.3.1 与传统套接字的主要区别一般来说,传统套接字为面向连接的可靠字节流(SOCK_STREAM)或无连接不成靠数据报(SOCK_DGRAM)供给同步接口。对比之下,ZMQ套接字供给了一个异步动静行列队伍的抽象,具有确切的排队语义取决于使用的套接字类型。传统套接字传输字节流或离散数据报时,ZMQ套接字传输离散动静。
ZMQ套接字是异步的,意味着物理连接成立和拆除,从头连接和有效传输的时间对用户是透明的,并由ZMQ本身组织。别的,动静可能在对等体不成用以接收它们的情况下排队。
传统套接字只允许严格的一对一(两个对等体),多对一(多个客户机,一个处事器),或者在某些情况下允许一对多(多播)关系。除ZMQ_PAIR之外,ZMQ套接字可以使用zmq_connect()连接到多个端点,同时使用zmq_bind()接受来自绑定到该套接字的多个端点的传入连接,从而允许多对多关系。
1.1.3.2 线程安适ZMQ套接字不是线程安适的。应用措施绝不能使用来自多个线程的套接字,除非在将套接字从一个线程迁移到另一个线程的情况下具有“完全围栅”内存樊篱。
1.1.3.3 套接字类型以下部分介绍由ZMQ界说的套接字类型,凭据由相关套接字类型构建的通例动静通报模式进行分组。
1.1.3.3.1 请求 - 答复模式请求 - 应答模式用于从ZMQ_REQ客户端向一个或多个ZMQ_REP处事发送请求,并接收对发送的每个请求的后续答复。请求 - 回复模式由:28正式界说。
ZMQ_REQ
客户端使用ZMQ_REQ类型的套接字向处事发送请求并从处事接收答复。 此套接字类型只允许交换zmq_send(请求)和随后的zmq_recv(应答)挪用序列。 发送的每个请求都是在所有处事中进行的,并且每个收到的答复都与上次发出的请求相匹配。
如果没有可用的处事,则套接字上的任何发送操纵都应梗阻,直到至少有一项处事可用。 REQ套接字不应抛弃动静。
ZMQ_REQ特性总结
ZMQ_REP 兼容的对等套接字 ZMQ_REP,ZMQ_ROUTER
标的目的 双向
发送/接收模式 发送,接收,发送,接收,...
出路由计谋 循环
传入路由计谋 最后一个peer
静音状态下的行动 Block
ZMQ_REP
处事使用类型为ZMQ_REP的套接字接收来自客户真个请求并将其发送给客户端。 此套接字类型只允许交换zmq_recv(请求)和随后的zmq_send(答复)挪用序列。 收到的每个请求均从所有客户端公平排队,并且每个发送的答复都路由到发出最后请求的客户端。 如果原始请求者不再存在,则答复将被无声抛弃。
ZMQ_REP特性总结
兼容的对等套接字 ZMQ_REQ,ZMQ_DEALER
标的目的 双向
发送/接收模式 接收,发送,接收,发送,...
传入路由计谋 公平排队
外出路由计谋 最后一个同伴
ZMQ_DEALER
ZMQ_DEALER类型的套接字是用于扩展请求/答复套接字的高级模式。 发送的每条动静在所有连接的对等体中都是全局动静通报的,并且每个收到的动静都从所有连接的对等体公平排队。
当ZMQ_DEALER套接字由于到达所有对等体的高水位而进入静音状态或者根柢没有对等体时,套接字上的任何zmq_send(3)操纵都应梗阻,直到静音状态结束或至少一个 对等体可用于发送; 动静不会被抛弃。
当一个ZMQ_DEALER套接字连接到一个ZMQ_REP套接字时,每个发送的动静必需包罗一个空的动静部分,分隔断绝分手符,后跟一个或多个正文部分。
ZMQ_DEALER特性摘要
兼容的对等套接字 ZMQ_ROUTER,ZMQ_REP,ZMQ_DEALER
标的目的 双向
发送/接收模式 不受限制
出路由计谋 循环
传入路由计谋 公平排队
静音状态下的行动 Block
ZMQ_ROUTER