Repolode
ithewei

ithewei/libhv

イベントループを備え、TCP/UDP、SSL、HTTP、WebSocket、MQTT、Redisのクライアント/サーバーに対応するクロスプラットフォームのC/C++ネットワークライブラリ。

スター
7,572
フォーク
1,372
未解決の Issue
63
最終コミット
10 日前

これは何?

libhvは、ノンブロッキングIO、タイマー、アイドルイベント、シグナルイベントに対応したイベントループを基盤とするC/C++ネットワークライブラリです。libevent、libev、libuvと同じ領域をカバーしながら、よりシンプルなAPIを提供し、TCP/UDPクライアント・サーバー・プロキシ、OpenSSL、GnuTLS、mbedTLSを使ったSSL/TLS、オプションのKCPベースの信頼性の高いUDPモードなど、多くのプロトコルを標準で利用できます。

ソケット通信に加え、HTTP/1.x、HTTP/2、HTTPS、gRPCに対応するHTTPクライアント/サーバーを備えています。Gin風のルーターは、RESTfulパス、ミドルウェア、keep-alive、チャンク転送、SSEをサポートします。さらに、WebSocketクライアント/サーバー、MQTTクライアント、Redisクライアントも利用できます。Makefile、CMake、Bazel、vcpkg、xmakeを使って、Linux、Windows、macOS、Android、iOS、BSD、Solaris向けにビルドできます。

CとC++の両方のインターフェースを提供しています。C++層にはevpp風のTcpServer/TcpClient APIと、Pythonのrequestsを参考にしたrequests風HTTPクライアントがあり、簡単な用途なら数行で実装できます。リポジトリには、curl、httpd、wrk、nc、nmap、kcptunといったおなじみのツールを再実装したサンプルプログラムも含まれています。

主な機能

  • 01IO、タイマー、アイドル、カスタム、シグナルイベントに対応するイベントループ。
  • 02ハートビート、再接続、マルチスレッドセーフな書き込み/クローズに対応するTCP/UDPクライアント、サーバー、プロキシ。
  • 03固定長、区切り文字、長さフィールドに対応する組み込みのパケット分割モード。
  • 04HTTPS、HTTP/2、gRPC、RESTfulルーティング、ミドルウェア、チャンク転送、SSEに対応するHTTPクライアント/サーバー。
  • 05WebSocketクライアント/サーバー、MQTTクライアント、Redisクライアント。
  • 06OpenSSL、GnuTLS、mbedTLSを使ったSSL/TLSと、KCPを使った信頼性の高いUDP通信。

ユースケース

  • ハートビート、再接続、パケットフレーミングが必要な独自の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 とは?
イベントループを備え、TCP/UDP、SSL、HTTP、WebSocket、MQTT、Redisのクライアント/サーバーに対応するクロスプラットフォームのC/C++ネットワークライブラリ。 libhvは、ノンブロッキングIO、タイマー、アイドルイベント、シグナルイベントに対応したイベントループを基盤とするC/C++ネットワークライブラリです。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

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。

8546+5 今週823SwiftApache-2.0更新 4 日前