zmq 中的cs 模式總結

2021-07-25 06:13:29 字數 2550 閱讀 1857

zmq 中的

cs 模式

zmq 中 的 網路程式設計

,  

server:

zmq_ctx_new 建立環境

,即啟動執行緒池

,初始化一些結構體等等一些預備操作

,,, zmq_socket

建立套接字,就是

linux c

中 的socket,  zmq_bind

繫結位址並對進行監聽

(linux c

中是 bind  listen),

然後 我們就可以

send ,

和 recv ,

在zmq

中是zmq_send, zmq_recv

或者 zmq_msg_send, zmq_msg_recv

其實現是使用的是epoll 模式, 對

epoll

的事件例如

epollin , epollout, epollhup

等等的一些事件進行監聽

client:

zmq_ctx_new 建立環境

, zmq_socket

建立套接字

, zmq_connect

發起連線

, 如果我們需要對

zmq中的一些事件進行監聽

, 則需要要

zmq_socket_monitor

建立乙個雙向管道, 在

linux c

中的就是

socketpair()

進行建立

, 我們可以在這個管道中

recv, send ,  

然後會根據讀取到的事件

(該事件在最後

),然後看看在套接字組上

,發生了什麼事情

, 如果不需要

,我們就可以對其進行接受

,和傳送了

但是, 在

zmq 中,

套接字的型別

, 不止是

sock_stream ,

和sock_dgara,

兩種, zmq

中的套接字

, 把這些細分了很多

, 不同的模型中對

send

和 recv

加了限制

, 如果不按照其模式的要求來

, 接受和傳送訊息會沒有效果 .

請求-應答模型

:(zmq_req)

該模型是被用作

從乙個客戶端傳送請求到乙個或者是多個伺服器,然後伺服器對每個請求做出請求.

如果沒有伺服器存在,客戶端會阻塞

, 直到有乙個伺服器變成可用狀態為止

,其伺服器操作是

zmq_recv, zmq_send.

即交替使用

對於客戶端來說,需要先

send,

再 recv

zmq_rep 模式

該模式是客戶端傳送請求,到伺服器

, 伺服器接受

,並對其做出相應的處理

其使用時

先zmq_recv, 再

zmq_send.

該模式,一般用於伺服器

zmq_dealer  模型

該模型是對請求響應套接字的擴充套件, 每個訊息的傳送是通過輪詢排程演算法去實現. 其 send和 recv 是不受限制 的

zmq_stream 模型

該模式對send, recv 不限制,.

zmq__pub 模型

就是傳送方, 該型別的套接字不能接受訊息, 只能傳送訊息, 在zmq中沒有實現該模式

的接收操作, zmq_recv不起作用,zmq_send 是起作用的.

zmq_sub 模型

接受方, 與zmq_pub連用, 不能傳送訊息, 只能接受訊息,在zmq中沒有實現該模式的

傳送操作, 也就是zmq_send 是不起作用的.zmq_recv 是起作用的.

zmq_pair: 該套接字模型 , 類似於雙向管道, 也就是linux c 中的socketpair(), 主要是用於程序間通訊,  可以通過它來檢測 zmq中的連線, 接受, 重連, 崩潰等等的一些事件.

以下是 zmq_event_t 的事件型別.

zmq_event_connected

zmq_event_connect_delayed

zmq_event_connect_retried

zmq_event_listening

zmq_event_bind_failed

zmq_event_accepted

zmq_event_accept_failed:zmq_event_closed

zmq_event_close_failed

zmq_event_disconnected:

zmq 中的事件型別

zmq event connected 鏈結已建立 當和遠端的另一端的連線建立好的時候,zmq event connected事件會被觸發。同步和非同步事件都會發生觸發此事件。事件值是新連線的socket的fd。zmq event connect delayed 同步連線失敗,仍在進行重試 當乙個請...

C S的學習總結

很不容易地將機房收費系統個人版結束了 這就像是到了長長的旅程中的乙個加油站 不僅需要維護修理 也需要加油充氣 以便更好地向下乙個目的地進發 我不能稀里糊塗地 延續疲憊的狀態繼續前進 就像公尺老師說得 汽車理論 我需要將這一路來的經驗教訓轉化為汽油 而不是重負.回顧這將近一年來的 c s歷程。軟體工程...

Zmq中pub和sub的用法

pub 示例 int main int,char zmq context t context 1 若在類中進行封裝時,應與socket t的生命週期一致。zmq socket t pubsocket context,zmq pub pubsocket.bind tcp 5555 while true...