項目地址:https://github.com/ithewei/hw.git
通過項目跨平臺編譯的不斷打磨,總結(jié)的一套跨平臺C/C++基礎(chǔ)庫,可跨linux、windows、mac平臺,
可方便用于實際項目中,也可供愛好造輪子的同學(xué)參考學(xué)習(xí);
- 提供了時間日期、字符串、日志、線程、線程池、同步鎖、緩存buf等基礎(chǔ)API;
- 實現(xiàn)了非阻塞IO的事件驅(qū)動框架,類似
libevent、libev、libuv; - 實現(xiàn)了
http客戶端和服務(wù)端,支持擴展ssl、http2、grpc; - 實現(xiàn)了
dns、ftp、smtp等常見協(xié)議; - 提供類似
nginx的master-workers進程模型; - 收集了
base64、md5、crc、sha等編碼數(shù)字摘要算法; - 提供了
ls、ping、nc、nmap、ifconfig、nslookup、sendmail等實現(xiàn);
Intro
hw 是一套跨平臺c/c++基礎(chǔ)組件,函數(shù)名/類名以h/H開頭
platform
- gcc
- mingw
- msvc
required
- c++11
Getting Started
git clone https://github.com/ithewei/hw.git
cd hw
make httpd curl
bin/httpd -d
ps aux | grep httpd
# http web service
bin/curl -v localhost:8080
# indexof
bin/curl -v localhost:8080/downloads/
# http api service
bin/curl -v -X POST localhost:8080/v1/api/json -H "Content-Type:application/json" -d '{"user":"admin","pswd":"123456"}'
Module
data-structure
- array.h: 動態(tài)數(shù)組
- list.h: 鏈表
- queue.h: 隊列
- heap.h: 堆
base
- hplatform.h: 平臺相關(guān)宏
- hdef.h: 宏定義
- hversion.h: 版本
- hbase.h: 基本接口
- hsysinfo.h: 系統(tǒng)信息
- hproc.h: 子進程/線程類
- hmath.h: math擴展函數(shù)
- htime.h: 時間
- herr.h: 錯誤碼
- hlog.h: 日志
- hsocket.h: socket操作
- hstring.h: 字符串
- hvar.h: var變量
- hobj.h: 對象基類
- hgui.h: gui相關(guān)定義
- hbuf.h: 緩存類
- hfile.h: 文件類
- hdir.h: ls實現(xiàn)
- hscope.h: 作用域RAII機制
- hmutex.h: 同步鎖
- hthread.h: 線程
- hthreadpool.h:線程池
utils
- hmain.h: main_ctx: arg env
- hendian.h: 大小端
- ifconfig.h: ifconfig實現(xiàn)
- iniparser.h: ini解析
- singleton.h: 單例模式
event
- hloop.h: 事件循環(huán)
iowatcher
- EVENT_SELECT
- EVENT_POLL
- EVENT_EPOLL (linux only)
- EVENT_KQUEUE (mac/bsd)
- EVENT_IOCP (windows only)
http
- http_client.h: http客戶端
- HttpServer.h: http服務(wù)端
other
- h.h: 總頭文件
- Makefile.in: 通用Makefile模板
- main.cpp.tmpl: 通用main.cpp模板
BUILD
examples
- make all
- make test: 服務(wù)端master-workers model
- make timer: 定時器測試
- make loop: 事件循環(huán)(包含timer、io、idle)
- make tcp: tcp server
- make udp: udp server
- make nc: network client
- make nmap: host discovery
- make httpd: http服務(wù)(包含web service和api service)
- make curl: 基于libcurl封裝http客戶端
tests
- make webbench: http服務(wù)壓力測試程序
- make unittest: 單元測試
compile options
compile with print debug info
- make DEFINES=PRINT_DEBUG
compile WITH_OPENSSL
- make DEFINES=WITH_OPENSSL
compile WITH_CURL
- make DEFINES="WITH_CURL CURL_STATICLIB"
compile WITH_NGHTTP2
- make DEFINES=WITH_NGHTTP2
other features
- USE_MULTIMAP
- WITH_WINDUMP
- ENABLE_IPV6