如果是學習的話我推薦你去看看Linux、FreeBSD系統中與網絡有關的那些命令程序的代碼,比如ping、tcpdump等等,他們還有很多更強大的開源替代方案,比如mtr,都是學習的好材料。這些程序都追求把一件事情做到極致,所以往往結構清晰卻又不會過于簡單,你看看光是下載就有wget和curl兩大神器夠你折騰了。Linux和FreeBSD的這類自帶命令雖然功能相同,但往往實現方式有很大差別,對比閱讀效果甚好。
ebbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個并發連接去測試網站的負載能力。Webbench使用C語言編寫,代碼實在太簡潔,源碼加起來不到600行。下載鏈接:GitHub-EZLippi/WebBench
Tinyhttpd是一個超輕量型HttpServer,使用C語言開發,全部代碼只有502行(包括注釋),附帶一個簡單的Client,可以通過閱讀這段代碼理解一個HttpServer的本質。下載鏈接鏈接:GitHub-EZLippi/Tinyhttpd
高性能web服務器nginx:download
C語言寫的事件驅動框架libevent/libevent·GitHub
ACE:C++面向對象網絡變成工具包
Boost.Asio:用于網絡和底層I/O編程的跨平臺的C++庫
Casablanca:C++RESTSDK
cpp-netlib:高級網絡編程的開源庫集合
Dyad.c:C語言的異步網絡
libcurl:多協議文件傳輸庫
Mongoose:非常輕量級的網絡服務器
Muduo:用于Linux多線程服務器的C++非阻塞網絡庫
net_skeleton:C/C++的TCP客戶端/服務器庫
nope.c:基于C語言的超輕型軟件平臺,用于可擴展的服務器端和網絡應用。對于C編程人員,可以考慮node.js
Onion:C語言HTTP服務器庫,其設計為輕量級,易使用。
POCO:用于構建網絡和基于互聯網應用程序的C++類庫,可以運行在桌面,服務器,移動和嵌入式系統。
RakNet:為游戲開發人員提供的跨平臺的開源C++網絡引擎。
Tufo:用于Qt之上的C++構建的異步Web框架。
WebSocket++:基于C++/BoostAiso的websocket客戶端/服務器庫
ZeroMQ:高速,模塊化的異步通信庫
這個網站整理的比較全,可以看看ezlippi.com的頁面另外編寫高性能web服務器當然離不開緩存啦,可以關注下Redis和Memcached.