そんなお題でStackOverflowの質問スレッドが立ってる。bump! bump!...
Stackoverflow - C++ sockets library for cross-platform
けち臭いStackoverflowはライブラリの比較を禁止にした。おかげでそのエントリは削除されてしまったので、archiveへのリンクを載せておく。
以下は ACE, Boost, Pocoの比較
c++ - ACE vs Boost vs POCO - Stack Overflow
出てきたライブラリとか、それ以外を並べてみる
ライブラリ | URL | 一言コメント |
---|---|---|
boost::asio | Boost.Asio - 1.64.0 | ・バイナリ配布しない&C++ならBoost使って当たり前じゃん?って方はこれで。 ・C++のほとんどの仕事はSTLとBoostで事足りる ・これだけのためにboost使うのはちょっと…という方は回れ右 ・バイナリがデカすぎる、boostのasio部分だけ分離できないのか? ・鶏を割くに焉んぞ牛刀を用いん |
cpp-netlib | cpp-netlib: The C++ Network Library | ・boost::asioを更にラップしたものみたいだ ・SSL対応 ・実用的なのかどうかはよくわからん |
ACE | The ADAPTIVE Communication Environment (ACE) | ・一応クライアント用も書けるけど、基本サーバサイドのライブラリ ・鶏を割くに焉んぞ牛刀を(ry ・いつかは使ってみたいライブラリの一つ。こういうフレームワークを使って巨大なシステムを構築するんでしょうね、Corbaというワードから古臭さが出てる。 |
Qt | http://qt.digia.com/ | ・Qtでアプリケーション使っているならばQtの手厚いネットワークサポートがあるはずです ・ |
wxWidgets | wxWidgets: Cross-Platform GUI Library | ・ネットワーク処理は微妙に貧弱 ・メインのクラスとなるwxHttpにはproxyサポートがない(wxHttp::SetProxyは名前だけあるけどprotectな仮想関数なので使えない) ・HTTP GETだけならまあ使える ・wxSocketClientでPOST処理も書けるけどコードが汚くなる ・SSLは対応してない |
wxCurl | wxCode - wxCURL | ・curlに依存するのがちょっと嫌かも…Makefile.amが異常に複雑 ・というかそれはCurlだよな ・Proxyに対応してない ・SSLも対応してない |
C++ Sockets | http://www.alhem.net/Sockets/index.html | ・依存関係も少ないしなんかよさげ ・構造的にMinGWでのビルドができない |
POCO C++ Libraries | Overview | POCO C++ Libraries | ・これもよく聞くけど、ネットワーク限定じゃなくてC++の総合的なライブラリどちらかと言うとサーバサイド? |
commonc++ | hyperrealm.com - commoncpp | ・C++の総合的なライブラリみたい、ネットワークはおまけか |
YAMI4 | Inspirel - YAMI4 | ・名前からして面白げ、peer-to-peerという文字が見えるが 性能の低いデバイス(組み込み系ね)でも使えるのが売りらしい |
CLX C++ Libraries | CLX C++ Libraries | ・ヘッダファイルだけで構成されたライブラリ、日本人が作ったみたい。いろいろできるらしいが… |
ØMQ | Distributed Messaging - zeromq | ・zmq同士でしか通信できない ・独自フレームワークのアプリ内の通信に使われているのを見たことがある ・というか最近使った ・通信をプールさせたりキューに詰めたりできる ・単純なHTTP通信用ライブラリではない |
librascal | Faerion — librascal | ・ロシア製のしっかりとしたクロスプラットフォームのソケットライブラリ ・残念なことにそこまで多機能ではない |
Endpoint C++ Socket Library | Endpoint | ・クロスプラットフォームのC++ソケットライブラリ ・開発止まってる |
LiON | LiON - Lundman Wiki | ・よさげに見えるがこれはC++ではなくCだな ・SSLが手軽に使えそうなのはよかった |
libwww | Libwww - the W3C Sample Code Library | ・これを忘れていた ・w3cのライブラリ、PerlのLWPで有名 ・そういやlibwww + wxWidgets = Amayaでした |
libcurl | curl | ・C言語使いの場合これがおすすめ ・curlはlibwwwの代替だったらしい。事実、libwwwの開発は止まっている。libcurlを使おう ・これもまたデカイライブラリである |
curlpp | Google Code Archive - Long-term storage for Google Code Project Hosting. | ・私のおすすめ ・CurlのC++バインディング ・SSL対応、Proxy対応、GET,POST,DELETEとかいろいろ対応 ・boostを混ぜて使えるらしい |
libsoup | Projects/libsoup - GNOME Wiki! | ・GNOME系の通信用ライブラリ、普通に高性能 ・ただしglibに依存する ・Linux限定ならこれでいいかも |
neon | neon HTTP and WebDAV client library | ・C言語だけど高性能、いい感じ ・HTTP/WebDAV operations (GET, MOVE, DELETE, etc)対応 ・SSL対応 |
感想
やはりC++ Sockets, ØMQどちらかが良さげか
追記2
libneonを追加
追記3
cpp-netlibを追加
追記4
0mqについてのコメントを追加