classDiagram
i_poll_events <|-- socket_base_t
own_t <|-- socket_base_t
array_item_t <|-- socket_base_t
i_pipe_events <|-- socket_base_t
socket_base_t <|-- channel_t
socket_base_t <|-- client_t
socket_base_t <|-- dealer_t
socket_base_t <|-- dgram_t
socket_base_t <|-- dish_t
socket_base_t <|-- gather_t
socket_base_t <|-- pull_t
socket_base_t <|-- push_t
socket_base_t <|-- radio_t
socket_base_t <|-- server_t
socket_base_t <|-- dish_t
socket_base_t <|-- stream_t
socket_base_t <|-- xpub_t
socket_base_t <|-- xsub_t
zmq支持以下通讯方式:
tcp使用TCP的单播传输。inpro线程间通信。ipc本地进程间通信。pgm基于IP网络协议的可靠多路广播(只可用于pub和sub类型套接字)。epgm基于IP网络协议的可靠多路广播(只可用于pub和sub类型套接字)。vmci虚拟机通信接口。
| socket | 组合 | 说明 |
|---|---|---|
| ZMQ_PAIR | ZMQ_PAIR + ZMQ_PAIR:线程间通信 |
套接字对 |
| ZMQ_PUB | ZMQ_PUB + ZMQ_SUB:经典发布订阅模型ZMQ_PUB + ZMQ_XSUB:高级发布模型 |
发布套接字 |
| ZMQ_SUB | ZMQ_SUB + ZMQ_PUB:经典发布订阅模型ZMQ_SUB + ZMQ_XPUB:高级订阅模型 |
订阅套接字 |
| ZMQ_XPUB | ZMQ_XPUB + ZMQ_XSUB:高级发布订阅模型ZMQ_SUB + ZMQ_XPUB:高级订阅模型 |
高级订阅套接字(用于转发套接字发布的消息) |
| ZMQ_XSUB | ZMQ_XPUB + ZMQ_XSUB:高级发布订阅模型ZMQ_PUB + ZMQ_XSUB:高级发布模型 |
高级发布套接字(用于接收套接字发布的消息) |
| ZMQ_REQ | ZMQ_REQ + ZMQ_REP:经典请求响应模型 |
请求套接字(一问一答) |
| ZMQ_REP | ZMQ_REQ + ZMQ_REP:经典请求响应模型 |
响应套接字(一问一答) |
| ZMQ_XREQ | ZMQ_XREQ + ZMQ_XREP:高级请求响应模型 |
|
| ZMQ_XREP | ZMQ_XREQ + ZMQ_XREP:高级请求响应模型 |
|
| ZMQ_PUSH | ZMQ_PUSH + ZMQ_PULL:经典推/拉模型 |
推送套接字 |
| ZMQ_PULL | ZMQ_PUSH + ZMQ_PULL:经典推/拉模型 |
拉取套接字 |
| ZMQ_STREAM | ||
| ZMQ_SERVER | ||
| ZMQ_CLIENT | ||
| ZMQ_GATHER | ||
| ZMQ_SCATTER | ||
| ZMQ_DGRAM | ||
| ZMQ_PEER | ||
| ZMQ_CHANNEL |
graph TD
zmq::socket_base_t::connect --> zmq::socket_base_t::connect_internal --> zmq::session_base_t::create
触发连接事件:
graph TD
zmq::poller_base_t::execute_timers --> zmq::stream_connecter_base_t::timer_event --> zmq::session_base_t::start_connecting --> connect
TODO
TODO
TODO
TODO
TODO
TODO
TODO