为 PHP 提供事件驱动网络引擎与协程运行时的扩展,用于构建长驻的 TCP、UDP、HTTP 和 WebSocket 服务。
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
克隆仓库
git clone https://github.com/ithewei/libhv.git - 2
进入项目目录
cd libhv - 3
使用 Makefile 配置构建
./configure - 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 数据每日更新。
相关项目
基于 curl 的 Python HTTP 客户端,可模拟浏览器的 TLS、JA3 和 HTTP/2 指纹。
一个用 C 编写的嵌入式网络库,仅两个文件,提供 TCP/IP 协议栈、TLS 1.3、HTTP、WebSocket、MQTT 与固件 OTA 升级。
用 Swift 编写的跨平台非阻塞事件驱动网络框架,用于构建高性能协议服务端与客户端。
面向网络应用的跨平台 C++ 类库,涵盖 HTTP、网络通信、数据库、XML/JSON 和日志等常用功能。
跨平台 C/C++ 网络通信库与服务端框架,内置协程、HTTP、Redis、MQTT 及数据库客户端。