yedf2 / handy

🔥简洁易用的C++11网络库 / 支持单机千万并发连接 / a simple C++11 network server framework
BSD 2-Clause "Simplified" License
4.56k stars 1.33k forks source link
c c-plus-plus concurrent-programming cpp11 epoll networking

handyBuild Status

English

简洁易用的C++11网络库

多平台支持

支持优雅退出

优雅退出可以让程序员更好的定义自己程序的退出行为

能够更好的借助valgrind等工具检查内存泄露。

高性能

简洁

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, "", 2099);
    exitif(svr == NULL, "start tcp server failed");
    svr->onConnRead([](const TcpConnPtr& con) {
        con->send(con->getInput());
    });
    base.loop();
}

支持半同步半异步处理

异步管理网络I/O,同步处理请求,可以简化服务器处理逻辑的编写,示例参见examples/hsha.cc

openssl支持

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

protobuf支持

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

udp支持

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

安装与使用

make && make install

目录结构

使用文档

raw-examples

使用os提供的api如epoll,kqueue编写并发应用程序

examples

使用handy的示例

license

Use of this source code is governed by a BSD-style license that can be found in the License file.

email

dongfuye@163.com

微信交流群

如果您希望更快的获得反馈,或者更多的了解其他用户在使用过程中的各种反馈,欢迎加入我们的微信交流群

请加作者的微信 yedf2008 好友或者扫码加好友,备注 handy 按照指引进群

yedf2008

如果您觉得此项目不错,或者对您有帮助,请赏颗星吧!