首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分享一个C++11的网络库

分享一个C++11的网络库

作者头像
fensnote
发布2021-07-09 16:05:54
发布2021-07-09 16:05:54
72200
代码可运行
举报
运行总次数:0
代码可运行

多平台

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

多平台支持

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

MacOSX: LLVM version 6.1.0 上测试通过

支持优雅退出

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

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

高性能

linux上使用epoll MacOSX上使用kqueue 性能测试报告 单机千万并发连接

简洁

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

代码示例--echo-server

代码语言:javascript
代码运行次数:0
运行
复制
#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,同步处理请求,可以简化服务器处理逻辑的编写,示例参见examples/hsha.cc

openssl支持

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

protobuf支持

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

udp支持

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

安装与使用

make && make install

目录结构

代码语言:javascript
代码运行次数:0
运行
复制
handy--------handy库
10m----------进行千万并发连接测试所使用的程序
examples----示例
raw-examples--原生api使用示例,包括了epoll,epoll ET模式,kqueue示例
ssl------------openssl相关的代码与示例
protobuf-----handy使用protobuf的示例
test-----------handy相关的测试
###使用文档

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

epoll.cc,演示了epoll的通常用法,使用epoll的LT模式 epoll-et.cc,演示了epoll的ET模式,与LT模式非常像,区别主要体现在不需要手动开关EPOLLOUT事件

examples 使用handy的示例

echo.cc 简单的回显服务 timer.cc 使用定时器来管理定时任务 idle-close.cc 关闭一个空闲的连接 reconnect.cc 设置连接关闭后自动重连 safe-close.cc 在其他线程中安全操作连接 chat.cc 简单的聊天应用,用户使用telnet登陆后,系统分配一个用户id,用户可以发送消息给某个用户,也可以发送消息给所有用户 codec-cli.cc 发送消息给服务器,使用的消息格式为mBdT开始,紧接着4字节的长度,然后是消息内容 codec-svr.cc 见上 hsha.cc 半同步半异步示例,用户可以把IO交给handy框架进行处理,自己同步处理用户请求 http-hello.cc 一个简单的http服务器程序 stat.cc 一个简单的状态服务器示例,一个内嵌的http服务器,方便外部的工具查看应用程序的状态 write-on-empty.cc 这个例子演示了需要写出大量数据,例如1G文件这种情景中的使用技巧 daemon.cc 程序已以daemon方式启动,从conf文件中获取日志相关的配置,并初始化日志参数 udp-cli.cc udp的客户端 udp-svr.cc udp服务器 udp-hsha.cc udp的半同步半异步服务器 license ==== Use of this source code is governed by a BSD-style license that can be found in the License file.

源码地址

https://gitee.com/yedf/handy

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式技术笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多平台
  • 简洁易用的C++11网络库
    • 多平台支持
    • 支持优雅退出
    • 高性能
    • 简洁
    • 代码示例--echo-server
    • 支持半同步半异步处理
    • openssl支持
    • protobuf支持
    • udp支持
    • 安装与使用
    • 目录结构
    • raw-examples 使用os提供的api如epoll,kqueue编写并发应用程序
    • examples 使用handy的示例
    • 源码地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档