Repolode
ithewei

ithewei/libhv

跨平台 C/C++ 网络库,提供事件循环以及 TCP/UDP、SSL、HTTP、WebSocket、MQTT、Redis 客户端与服务端支持。

Star
7,572
Fork
1,372
未关闭 Issue
63
最近提交
10天前

这是什么?

libhv 是一个 C/C++ 网络库,核心是基于非阻塞 IO 的事件循环,同时支持定时器、idle 事件和信号事件。它定位与 libevent、libev、libuv 类似,但 API 更简单,内置协议也更丰富:TCP/UDP 的客户端、服务端与代理,通过 OpenSSL、GnuTLS 或 mbedTLS 提供的 SSL/TLS 支持,以及可选的 KCP 可靠 UDP 模式。

除套接字外,它还自带 HTTP 客户端和服务端,支持 HTTP/1.x、HTTP/2、HTTPS 和 gRPC,路由风格接近 Go 的 Gin,支持 RESTful 路径、中间件、keep-alive、chunked 和 SSE。此外还有 WebSocket 客户端/服务端、MQTT 客户端和 Redis 客户端。项目可在 Linux、Windows、macOS、Android、iOS、BSD、Solaris 上构建,提供 Makefile、CMake、Bazel、vcpkg、xmake 多种接入方式。

库同时提供 C 和 C++ 接口。C++ 层包含类似 evpp 的 TcpServer/TcpClient API,以及模仿 Python requests 的 HTTP 客户端,简单场景只需几行代码。仓库中还有一批示例程序,用 libhv 重新实现了 curl、httpd、wrk、nc、nmap、kcptun 等常见命令行工具。

核心功能

  • 01事件循环支持 IO、定时器、idle、自定义和信号事件。
  • 02TCP/UDP 客户端、服务端与代理,支持心跳、重连和线程安全的 write/close。
  • 03内置定长、分隔符、长度字段等常见拆包模式。
  • 04HTTP 客户端与服务端,支持 HTTPS、HTTP/2、gRPC,以及 RESTful 路由、中间件、chunked、SSE。
  • 05提供 WebSocket 客户端/服务端、MQTT 客户端和 Redis 客户端。
  • 06SSL/TLS 可选用 OpenSSL、GnuTLS 或 mbedTLS,可靠 UDP 基于 KCP。

适用场景

  • 开发需要心跳、重连和自定义拆包的 TCP/UDP 服务。
  • 用 C/C++ 编写 HTTP API 服务或反向代理,而不引入大型框架。
  • 为 C/C++ 应用增加 WebSocket 或 MQTT 通信能力。
  • 在 Linux、Windows、macOS、Android、iOS 之间移植网络代码。

快速上手

  1. 1

    克隆仓库

    git clone https://github.com/ithewei/libhv.git
  2. 2

    进入项目目录

    cd libhv
  3. 3

    使用 Makefile 配置构建

    ./configure
  4. 4

    编译项目

    make

使用前须知

  • Redis 支持默认关闭,构建时需要显式启用。

标签

常见问题

libhv 是什么?
跨平台 C/C++ 网络库,提供事件循环以及 TCP/UDP、SSL、HTTP、WebSocket、MQTT、Redis 客户端与服务端支持。 libhv 是一个 C/C++ 网络库,核心是基于非阻塞 IO 的事件循环,同时支持定时器、idle 事件和信号事件。它定位与 libevent、libev、libuv 类似,但 API 更简单,内置协议也更丰富:TCP/UDP 的客户端、服务端与代理,通过 OpenSSL、GnuTLS 或 mbedTLS 提供的 SSL/TLS 支持,以及可选的 KCP 可靠 UDP 模式。
libhv 可以免费使用吗?用的什么许可证?
libhv 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
libhv 还在维护吗?
活跃维护中。libhv 最近一次提交是在 2026年10月28日。
libhv 适合用来做什么?
开发需要心跳、重连和自定义拆包的 TCP/UDP 服务。 用 C/C++ 编写 HTTP API 服务或反向代理,而不引入大型框架。 为 C/C++ 应用增加 WebSocket 或 MQTT 通信能力。 在 Linux、Windows、macOS、Android、iOS 之间移植网络代码。
libhv 怎么安装和运行?
克隆仓库: git clone https://github.com/ithewei/libhv.git 进入项目目录: cd libhv 使用 Makefile 配置构建: ./configure 编译项目: make
在哪里获取 libhv?
源代码和安装说明在 GitHub 上:https://github.com/ithewei/libhv

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目