為什么寫這個教程?
最近在學C++,翻了幾次菜鳥教程后,想寫個專案練練手,之前了解過ngrok,一個內網穿透工具,簡單講就是在內網中部署自己的服務,通過這個工具,可以讓公網上的用戶訪問到服務,
之前看了部分原始碼,想把自己的一些優化想法用C++實作一下,所以斷斷續續花了2個多月寫了C++版本的CProxy,
寫的程序中不斷充實C++的相關知識(不得不說C++的特性是真的多,,,),同時也對網路底層有了更深的了解,比如一個連接如何復用?如何處理資料傳輸的邏輯?如何處理鏈接的斷開?
寫下這個教程有以下兩個目的:
- 復盤整個專案有沒有可以優化的地方,
- 鞏固CProxy實作程序中學到的知識,
- 達到自己年頭給自己定的寫一個系列文章的flag,
教程適用哪些讀者?
我希望的是有一點C++基礎和網路基礎的讀者就能看懂學到一些東西,當然肯定有些地方可能會寫的不清楚,讀者可以留言談論,有空一定回復,并完善文章,
整個專案會涉及到IO多路復用、多執行緒Reactor模型、零拷貝、網路底層資料傳輸處理等方面,我會在對應章節上附上自己之前參考的文章,幫助讀者理解,
教程食用姿勢
有能力的大佬可以先看看CProxy的代碼,自認能力一般,水平有限,如果發現有bug或者有更好的實作歡迎提issue或PR,
https://github.com/lzs123/CProxy.git
教程暫定有以下內容:
- 一切從最簡單的socket說起,介紹一次socket連接的程序
- 聊聊代碼編譯和格式化,主要介紹cmake、clang、clang-format的使用和注意事項,并結合到專案中使用
- IO多路復用和Reactor多執行緒模型
- 內網的業務服務被外網訪問的整個資料流
- 使用splice零拷貝減少資料復制
- 連接管理:如何復用、維護、優雅斷開
本教程的每個章節的代碼會上傳到CProxy-tutorial,star and fork, respect!!
更新進度
day01-從一個基礎的socket服務說起
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463440.html
標籤:C++
上一篇:在反應中僅更改單個元素類
