長時間稼働するTCP、UDP、HTTP、WebSocketサービスの構築に使える、イベント駆動型ネットワークエンジンとコルーチンランタイムを提供するPHP拡張です。
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
リポジトリをクローンする
git clone https://github.com/ithewei/libhv.git - 2
プロジェクトディレクトリに移動する
cd libhv - 3
Makefileでビルドを設定する
./configure - 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 の数値は毎日更新されます。
関連プロジェクト
curlベースのPython HTTPクライアント。ブラウザーのTLS、JA3、HTTP/2フィンガープリントを偽装し、ブロックを回避できます。
マイコン向けに、TCP/IPスタック、TLS 1.3、HTTP、WebSocket、MQTT、ファームウェアのOTA更新を提供するC製の2ファイル構成ネットワーキングライブラリ。
Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。
HTTP、ネットワーク、データベース、XML/JSON、ログ機能を備えた、ネットワーク中心のアプリケーション構築向けクロスプラットフォームC++クラスライブラリ。
コルーチン、HTTP、Redis、MQTT、データベースクライアントを備えた、C/C++向けクロスプラットフォーム通信ライブラリ兼サーバーフレームワーク。