美文网首页
跨平台C语言基础库

跨平台C语言基础库

作者: ithewei | 来源:发表于2019-11-21 14:32 被阅读0次

项目地址:https://github.com/ithewei/hw.git

通过项目跨平台编译的不断打磨,总结的一套跨平台C/C++基础库,可跨linux、windows、mac平台,
可方便用于实际项目中,也可供爱好造轮子的同学参考学习;

  • 提供了时间日期、字符串、日志、线程、线程池、同步锁、缓存buf等基础API;
  • 实现了非阻塞IO的事件驱动框架,类似libevent、libev、libuv
  • 实现了http客户端和服务端,支持扩展ssl、http2、grpc
  • 实现了dns、ftp、smtp等常见协议;
  • 提供类似nginxmaster-workers进程模型;
  • 收集了base64、md5、crc、sha等编码数字摘要算法;
  • 提供了ls、ping、nc、nmap、ifconfig、nslookup、sendmail等实现;

Intro

hw 是一套跨平台c/c++基础组件,函数名/类名以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: 动态数组
  • list.h: 链表
  • queue.h: 队列
  • heap.h: 堆

base

  • hplatform.h: 平台相关宏
  • hdef.h: 宏定义
  • hversion.h: 版本
  • hbase.h: 基本接口
  • hsysinfo.h: 系统信息
  • hproc.h: 子进程/线程类
  • hmath.h: math扩展函数
  • htime.h: 时间
  • herr.h: 错误码
  • hlog.h: 日志
  • hsocket.h: socket操作
  • hstring.h: 字符串
  • hvar.h: var变量
  • hobj.h: 对象基类
  • hgui.h: gui相关定义
  • hbuf.h: 缓存类
  • hfile.h: 文件类
  • hdir.h: ls实现
  • hscope.h: 作用域RAII机制
  • hmutex.h: 同步锁
  • hthread.h: 线程
  • hthreadpool.h:线程池

utils

  • hmain.h: main_ctx: arg env
  • hendian.h: 大小端
  • ifconfig.h: ifconfig实现
  • iniparser.h: ini解析
  • singleton.h: 单例模式

event

  • hloop.h: 事件循环

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服务端

other

  • h.h: 总头文件
  • Makefile.in: 通用Makefile模板
  • main.cpp.tmpl: 通用main.cpp模板

BUILD

examples

  • make all
  • make test: 服务端master-workers model
  • make timer: 定时器测试
  • make loop: 事件循环(包含timer、io、idle)
  • make tcp: tcp server
  • make udp: udp server
  • make nc: network client
  • make nmap: host discovery
  • make httpd: http服务(包含web service和api service)
  • make curl: 基于libcurl封装http客户端

tests

  • make webbench: http服务压力测试程序
  • 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

相关文章

  • 跨平台C语言基础库

    项目地址:https://github.com/ithewei/hw.git 通过项目跨平台编译的不断打磨,总结的...

  • 大牛查漏补缺 -- C语言注意点

    前言:C语言是Java、Objective-C、C++等高级语言的基础、也是跨平台开发的基础,指针是C语言的重中之...

  • 了解GObject

    glib是一个跨平台实现的c语言基础库,实现了众多的基础功能。比如: 基本的数据结构:动态数组GArray,单/双...

  • 树莓派PythonGUI学习

    Qt简介 使用C++语言编写的跨平台GUI库,支持Windows、Mac OS X和Linux。由于Qt使用C++...

  • SDL开发笔记(初级)

    SDL窗口渲染 SDL(Simple DirectMedia Layer) 由C语言实现的跨平台的媒体开源库 用于...

  • OpenCV with iOS

    OpenCV 是一种开源跨平台计算机视觉库,采用C/C++ 语言编写, 提供了Python、Ruby、MATLAB...

  • Websocket 库和 JSON RPC 库选型

    WebSocket 库选型 C/C++ 跨平台 WebSocket 库备选方案: uWebSockets GitH...

  • 构建移动平台本地库

    构建移动平台本地库 无论是iOS平台还是Android平台,可能都会用到C&&C++库。而C&&C++是支持跨平台...

  • SDL2音视频渲染入门

    SDL, “Simple DirectMedia Layer”,它是一套开放源代码的跨平台多媒体开发库,使用C语言...

  • Android Studio用cmake编译SDL2

    先说SDL(Simple DirectMedia Layer)的作用吧,SDL是套跨平台的多媒体库,代码是用c语言...

网友评论

      本文标题:跨平台C语言基础库

      本文链接:https://www.haomeiwen.com/subject/jehtwctx.html