如前文所述,我抽了些時間碼了一套網絡通信的框架代碼。
現在放在GitHub上:https://github.com/KonsanAlide/KonsanNet
設想中這套框架包含如下模塊:
1.通信服務端模塊CXCommunicationServer:支持TCP、UDP兩種協議,支持WINDOWS和Linux兩種平臺,包含會話管理、數據包解析、線程調度管理、數據包分發等模塊,大概分了四層,通信內核層(EPOLL和IOCP模型IO處理層)、數據包解析層(拆解包、驗證、壓縮、加密)、會話管理層、用戶消息處理層。
2.客戶端模塊CXCommunicationClient:包含一個基礎的SOCKET封裝庫,包含通信會話管理類,包含基礎的數據包組包和拆解包,包含rpc對象的調用例子,包含文件傳輸例子,包含基礎消息通信例子。
3.文件庫CXFile:對Windows文件操作接口和Linux的操作接口做了一個簡單的封裝,主要是用於大文件的處理。
4.內存管理庫CXMemoryCache:一個簡單的內存管理庫,用了一些Linux slab的原理,寫了一個鏈表來管理內存的分配和釋放,寫了一個類來管理不同大小的塊的內存池對象,用於解決網絡通信中內存頻繁的分配和釋放問題。
5.線程鎖庫CXLock:對Windows 的臨界區和Linux的spin_lock,mutex進行一個簡單的封裝。
6.日誌類CXLog:簡單的日誌類,有待擴展。
7.線程庫CXThread:對Windows和Linux的線程函數進行了一下簡單的封裝,主要是爲了兼容非C++11的低版本編譯環境。
8.套接字庫CXSocketWrapper:對socket的操作函數進行封裝,統一Windows和Linux的調用接口。這個庫裏面的核心類是我以前從網上下載下來修改過的,已經忘記來源於哪,如果有版權問題,或者發現原作者,請麻煩聯繫我,謝謝。
9.事件庫CXEvent:對Windows的event和Linux的條件變量進行包裝,統一Windows和Linux的調用接口。
該框架,目前在TCP通信方面已經進行了功能性的測試,包含Windows和Linux版本,初步實現了會話管理、消息通信處理和文件傳輸處理,但依然有很多需要改進的地方,後續我會慢慢的改進它,也歡迎大家參與改進工作,謝謝!