PHP-расширение с событийным сетевым движком и средой выполнения корутин для создания постоянно работающих TCP-, UDP-, HTTP- и WebSocket-сервисов.
ithewei/libhv
Кроссплатформенная сетевая библиотека C/C++ с циклом событий и поддержкой TCP/UDP, SSL, HTTP, WebSocket, MQTT и клиентской и серверной частей Redis.
- Звёзды
- 7,572
- Форки
- 1,372
- Открытые issues
- 63
- Последний коммит
- 11 дней назад
Что это?
libhv — сетевая библиотека C/C++, построенная вокруг цикла событий с неблокирующим IO, таймерами, событиями простоя и сигналов. Она относится к той же категории, что и libevent, libev и libuv, но предлагает более простой API и поддерживает больше протоколов из коробки: TCP/UDP-клиенты, серверы и прокси; SSL/TLS через OpenSSL, GnuTLS или mbedTLS; а также опциональный режим надёжного UDP на основе KCP.
Помимо работы с сокетами, библиотека включает HTTP-клиент и сервер с поддержкой HTTP/1.x, HTTP/2, HTTPS и gRPC, а также роутер в стиле Gin для RESTful-маршрутов, middleware, keep-alive, потоковых ответов и SSE. Набор протоколов дополняют WebSocket-клиент и сервер, MQTT-клиент и Redis-клиент. Библиотека собирается на Linux, Windows, macOS, Android, iOS, BSD и Solaris с помощью Makefile, CMake, Bazel, vcpkg или xmake.
Предусмотрены интерфейсы и для C, и для C++. Слой C++ включает API TcpServer/TcpClient в стиле evpp и HTTP-клиент в стиле requests, основанный на Python-библиотеке requests, поэтому для простых задач достаточно нескольких строк кода. В репозитории также есть примеры программ, реализующих знакомые инструменты вроде curl, httpd, wrk, nc, nmap и kcptun.
Ключевые возможности
- 01Цикл событий с поддержкой IO, таймеров, событий простоя, пользовательских событий и сигналов.
- 02TCP/UDP-клиент, сервер и прокси, поддерживающие heartbeat, переподключение и потокобезопасные операции записи и закрытия.
- 03Встроенные режимы распаковки: фиксированная длина, разделитель и поле длины.
- 04HTTP-клиент и сервер с поддержкой HTTPS, HTTP/2, gRPC, RESTful-маршрутизации, middleware, потоковых ответов и SSE.
- 05WebSocket-клиент и сервер, MQTT-клиент и Redis-клиент.
- 06SSL/TLS через OpenSSL, GnuTLS или mbedTLS; надёжный UDP через KCP.
Сценарии использования
- Создание собственного TCP- или UDP-сервиса, которому нужны heartbeat, переподключение и разбор пакетов.
- Разработка HTTP API-сервера или обратного прокси на C/C++ без подключения тяжёлого фреймворка.
- Добавление поддержки WebSocket или MQTT в приложение на C/C++.
- Перенос сетевого кода между 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, таймерами, событиями простоя и сигналов. Она относится к той же категории, что и libevent, libev и libuv, но предлагает более простой API и поддерживает больше протоколов из коробки: TCP/UDP-клиенты, серверы и прокси; SSL/TLS через OpenSSL, GnuTLS или mbedTLS; а также опциональный режим надёжного UDP на основе KCP.
- libhv можно использовать бесплатно? Какая у него лицензия?
- libhv распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- libhv всё ещё поддерживается?
- Активно поддерживается. Последний коммит в libhv — 28 окт. 2026 г..
- Для чего можно использовать libhv?
- Создание собственного TCP- или UDP-сервиса, которому нужны heartbeat, переподключение и разбор пакетов. Разработка HTTP API-сервера или обратного прокси на C/C++ без подключения тяжёлого фреймворка. Добавление поддержки WebSocket или MQTT в приложение на C/C++. Перенос сетевого кода между 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
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
HTTP-клиент для Python на базе curl, который имитирует TLS-, JA3- и HTTP/2-отпечатки браузеров, помогая обходить блокировки.
Сетевая библиотека для встроенных систем на C из двух файлов: стек TCP/IP, TLS 1.3, HTTP, WebSocket, MQTT и OTA-обновления прошивки для микроконтроллеров.
Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.
Кроссплатформенные библиотеки классов C++ для сетевых приложений: HTTP, сети, базы данных, XML/JSON и логирование.
Кроссплатформенная сетевая библиотека и серверный фреймворк на C/C++ с корутинами, поддержкой HTTP, Redis, MQTT и клиентов баз данных.