異步httpd框架C++實現:shttpd_cpp

yne7 9年前發布 | 21K 次閱讀 C/C++開發 shttpd_cpp

一個用于快速開發http服務端的異步框架,該框架基于C++/asio實現,支持http(http1.1目前考慮了keep-alive, chunked等特性,若有欠缺歡迎補充)和https,該框架適用于與app或客戶端通訊的服務端,不適用于做前端(若由此需求建議考慮cppcms與 wt等項目)

依賴

  • asio

  • C++1y

  • openssl(https需要)

編譯-安裝

  • cd shttpd

  • mkdir build

  • cd build

  • cmake ..

  • make

  • sudo make install

編譯示例

  • cd shttpd

  • cd example

  • cd 某個示例的目錄

  • make

注意:

若在運行時出現如下錯誤:
error while loading shared libraries: libshttpd.so: cannot open shared object file: No such file or directory
請確保libshttpd.so所在目錄在ld的搜索路徑中,對于linux系統, libshttpd.so所在的目錄一般為/usr/local/lib
若發現改目錄不在ld的搜索路徑中,以下步驟可讓libshttpd.so被ld找到:

  • 修改/etc/ld.so.conf, 加入一行/usr/local/lib

  • 執行sudo ldconfig更新配置

示例代碼:

#include "server.hh"
struct TestHandler : public RequestHandler {
    using RequestHandler::RequestHandler;
    void handleRequest(RequestPtr req, ResponsePtr rep) override {
        rep->out() << "hello world!" << std::endl;
    }
};

int
main(int argc, char *argv[])
{
    asio::io_service io_service;
    Server server(io_service, "8888");
    server.addHandler("/", new TestHandler(&server));
    server.run();
}

項目主頁:http://www.baiduhome.net/lib/view/home/1427761774803

 本文由用戶 yne7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!