handy简洁高效的 C++11 网络库

联合创作 · 2023-09-29 08:57

Handy 是一个简洁高效的 C++11 网络库,支持 linux 与 mac 平台,使用异步 IO 模型。​

多平台支持

  • Linux:ubuntu14 64bit g++4.8.1 上测试通过

  • MacOSX:LLVM version 6.1.0 上测试通过

支持优雅退出

  • 优雅退出可以让程序员更好地定义自己程序的退出行为;
  • 能够更好地借助 valrind 等工具检查内存泄露。

高性能

简洁

10 行代码能够编写一个完整的服务器。

代码示例--echo-server:

#include <handy/handy.h>
using namespace handy;

int main(int argc, const char* argv[]) {
    EventBase base;
    Signal::signal(SIGINT, [&]{ base.exit(); });
    TcpServerPtr svr = TcpServer::startServer(&base, "", 99);
    exitif(svr == NULL, "start tcp server failed");
    svr->onConnRead([](const TcpConnPtr& con) {
        con->send(con->getInput());
    });
    base.loop();
}

支持半同步半异步处理

异步管理网络 I/O,同步处理请求,可以简化服务器处理逻辑的编写。

openssl 支持

异步连接管理,支持 openssl 连接,如果实现安装了 openssl,能够找到 <openssl/ssl.h>,项目会自动下载 handy-ssl,由于 openssl 的开源协议与此不兼容,所以项目文件单独放在 handy-ssl/

protobuf 支持

使用 protobuf 的消息 encode/decode 示例在 protobuf 下。

udp支持

支持udp,udp的客户端采用connect方式使用,类似tcp

浏览 3
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报