跨平臺C語言基礎(chǔ)庫

項目地址: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é)議;
  • 提供類似nginxmaster-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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容