C/C++ で構築できる HTTP Server についてまとめた。
下記を参考にした。
qiita: C/C++アプリケーション組込みHTTPサーバの調査
C 言語 編
(1) libmicrohttpd
HTTP サーバーの Cライブラリ。 GNUプロジェクトにより開発されている。 ライセンスは、 GNU LGPL v2.1 。
ドキュメントとサンプルコードも充実している。
A tutorial for GNU libmicrohttpd
github: libmicrohttpd examples
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/libmicrohttpd
(2) Mongoose
組み込みWEBサーバーの Cライブラリ。 1つのソースファイルと1つのヘッダファイルのライブラリ。 ライセンスは GPLv2 と商用版。
wikipedia: Mongoose (web server)
ドキュメントとサンプルコードも充実している。
マイコンへの組み込みが容易。
TCPスタックとして LWIP や PicoTCP を選択できる。
サンプルコードには、 arduino esp8266 stm32 などのマイコンの例がある。
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/mongoose
(3) EmbeddableWebServer
組み込み向け WEB サーバーの Cライブラリ。 シングルヘッダオンリーの ライブラリ。 ライセンスは BSD 2-clause
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/EmbeddableWebServer
(4) facil.io
TCP/IP 通信の Cライブラリ。
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/facil
(5) Socket
番外としてライブラリを使わないもの。
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/network
C++ 編
(6) POCO
ネットワーク対応の C++クラスライブラリです。 HTTPサーバが含まれる。 ファイルシステム、 XMLパーサ、SQLデータベースなども含む。 Boost ライセンス。
.wikipedia: POCO C++ Libraries
ドキュメントとサンプルコードも充実している。
POCO User Guides And Tutorials
下記の記事に使い方が解説されている。
codezine: POCO::Netライブラリによる組み込みWebサーバの実装
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/POCO
(7) Boost.Asio
Boost は様々な機能を持つ C++のライブラリです。 Boost.Asio は 非同期 I/OのC++のライブラリです。 Boost ライセンス。
wikipedia: Boost.Asio C++ library
ドキュメントとサンプルコードも充実している。
Boost.Asio がサポートしているのは、TCP通信レベルです。 HTTP通信は開発者が記述する必要がある。
HTTP Server のサンプルコードがあるので、 簡単なものはすぐにできる。
github: boost asio example http server
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/boost_asio
(8) Boost.Beast
Boost.Beast は Boost.Asio 上に実装されたHTTPライブラリです。 Boost ライセンス。
ドキュメントとサンプルコードも充実している。
下記の記事に使い方が解説されている。
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/boost_beast
(9) cpp-httplib
HTTPサーバ/クライアントの C++ライブラリです。 ヘッダオンリーのライブラリ。 MIT ライセンス
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/cpp_httplib
(10) RESTinio
Asio 上に実装された非同期型のHTTPサーバーの C++14 ライブラリです。
ドキュメントとサンプルコードが用意されている。
Github にサンプルコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/RESTinio