日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

有限状态机的C++实现(2)-bayonet开源网络服务器框架

發布時間:2025/3/17 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有限状态机的C++实现(2)-bayonet开源网络服务器框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有限狀態機的C++實現(2)-bayonet開源網絡服務器框架 | Vimer的程序世界

有限狀態機的C++實現(2)-bayonet開源網絡服務器框架

Published on 二月 18, 2011 6,009

接著上一篇文章: 有限狀態機的C++實現(1)-epoll狀態機,我們今天來介紹更復雜和深入的部分。

為什么會在標題中提到bayonet這個開源項目呢?筆者本人一直想要寫一套架構優美、功能完善的異步server框架,也看過很多朋友、同事實現的版本,雖然功能上基本能滿足需求,但是架構上我卻始終覺得是有瑕疵的,直到后來和同事討論,發現可以讓一個客戶端請求的到來作為一個session,而之后的每一次與其他server的交互都可以看作是一次狀態轉化,才感覺架構比較合理了。

簡單來說即,一個session從開始到介紹會經歷兩種狀態機的變化:

  • 1.業務邏輯層面的狀態變化,例如先驗證登錄態,再驗證權限,再獲取用戶資料
  • 2.每一個與其他server交互的socket自身的狀態變化,如recv、send、等,而socket的狀態變化會觸發邏輯層的狀態變化。

按照這種思路,目前的代碼開發已經完成了70%,即可以正常的進行一個session的開始和結束,主要還缺一些細節的代碼,比如超時的檢測及超時之后的處理,健全的統計之類。好了,我們來用vs看一下代碼的整體類圖(圖壓縮比較嚴重,請單擊后查看):

每個類的用處已經在途中簡單說明了,這里就不再贅述,我們重點來看一下用這個框架來實現一個邏輯server時需要做哪些事情。
svr2目錄下的main.cpp即實現了一個最簡單的server,我們按部分來看其實現:

總結

以上是生活随笔為你收集整理的有限状态机的C++实现(2)-bayonet开源网络服务器框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。