Repolode
ithewei

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. 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, таймерами, событиями простоя и сигналов. Она относится к той же категории, что и 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-отпечатки браузеров, помогая обходить блокировки.

6,8 тыс.+22 за неделю572PythonMITАктивно поддерживаетсяОбновлён 11 дней назад

Сетевая библиотека для встроенных систем на C из двух файлов: стек TCP/IP, TLS 1.3, HTTP, WebSocket, MQTT и OTA-обновления прошивки для микроконтроллеров.

13,1 тыс.+4 за неделю3 тыс.COtherАктивно поддерживаетсяОбновлён 21 час назад

Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.

8,5 тыс.+5 за неделю823SwiftApache-2.0Обновлён 4 дня назад