我寫監聽網絡上的插座和線路收到的數據包分離守護程序網關服務。我打算使用boost asio,但我堅持幾個問題。以下是我計劃實現的服務器的設計:添加一個套接字描述符到io_service對象動態和消除它
網關將使用boost asio偵聽TCP連接。
網關還將使用boost asio偵聽來自守護程序的流式Unix域連接。
每當tcp連接上有數據包時,網關就會查看數據包中的協議標記,並將數據包放在服務將要偵聽的unix域連接上。
每當服務連接上有一個數據包時,網關就會查看客戶端標籤並將其放在相應的客戶端連接上。
網關中的每個描述符都將是一個NONBLOCKING。
當網關正在寫入服務連接時,如果服務套接字已滿,有可能會收到EAGAIN或EWOULDBLOCK錯誤,但我遇到了一個特定問題。我計劃通過排隊緩衝區並「等待服務連接準備寫入」來解決這個問題。
如果我要使用select系統調用「等待服務連接準備寫入」,將轉化爲在writefd列表中添加fd並將其傳遞給select。一旦服務連接準備好寫入,我將把入隊的緩衝區寫入連接,並從select的writefdlist中刪除服務連接。
我怎麼做升壓ASIO是一回事嗎?這樣的事情可能嗎?
+1好的總結或爲什麼反應堆模式可能是必要的原因 – 2013-03-12 02:41:36