搜索
bottom↓
回复: 20

发布新版开源C++网络库

[复制链接]

出0入0汤圆

发表于 2020-4-21 04:58:35 | 显示全部楼层 |阅读模式
本帖最后由 路人甲被注册了 于 2020-4-21 05:38 编辑

之前发过:https://github.com/wlgq2/uv-cpp
由于最近失业空闲,给这个网络加上http支持,实现了一个基于RadixTree数据结构的http路由支持,可以支持通配符或者设置参数。比如
  1. int main(int argc, char** args)
  2. {
  3.     uv::EventLoop loop;
  4.     uv::http::HttpServer::SetBufferMode(uv::GlobalConfig::BufferMode::CycleBuffer);

  5.     uv::http::HttpServer server(&loop);
  6.         
  7.     //example:  127.0.0.1:10010/test
  8.     server.Get("/test",std::bind(&func1,std::placeholders::_1,std::placeholders::_2));
  9.    
  10.     //example:  127.0.0.1:10010/some123abc
  11.     server.Get("/some*",std::bind(&func2, std::placeholders::_1, std::placeholders::_2));
  12.    
  13.     //example:  127.0.0.1:10010/value:1234
  14.     server.Get("/value:",std::bind(&func3, std::placeholders::_1, std::placeholders::_2));
  15.    
  16.     //example:  127.0.0.1:10010/sum?param1=100&param2=23
  17.     server.Get("/sum",std::bind(&func4, std::placeholders::_1, std::placeholders::_2));
  18.    
  19.     uv::SocketAddr addr("127.0.0.1", 10010);
  20.     server.bindAndListen(addr);
  21.     loop.run();
  22. }
复制代码

接口简洁,性能堪用,运行稳定。十行代码实现一个服务器。
  1. int main(int argc, char** args)
  2. {
  3.     uv::EventLoop* loop = uv::EventLoop::DefaultLoop();
  4.        
  5.     uv::TcpServer server(loop);
  6.     server.setMessageCallback([](uv::TcpConnectionPtr ptr,const char* data, ssize_t size)
  7.     {
  8.         ptr->write(data, size, nullptr);
  9.     });
  10.        
  11.     uv::SocketAddr addr("0.0.0.0", 10005, uv::SocketAddr::Ipv4);
  12.     server.bindAndListen(addr);
  13.     loop->run();
  14. }
复制代码


顺带和大名鼎鼎的boost.asio及nginx做性能测试对比。。

ping-pong测试显示 uv-cpp 有不弱于boost.asio的并发性能,不过这主要是由于libuv本身很强大。





与nginx性能测试对比,1000个并发,100000次请求。单位时间请求及字节传输都弱于nginx,不过nginx不知道是不是配置问题,有500+次失败请求,uv-cpp没有。



由于用到c++11特性,需要gcc4.8以上支持。


欢迎 star 、issue 、pr……



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2020-4-21 05:36:06 | 显示全部楼层
太高深,看不懂

出0入4汤圆

发表于 2020-4-21 05:49:25 来自手机 | 显示全部楼层
支持一下

出0入25汤圆

发表于 2020-4-21 06:01:58 来自手机 | 显示全部楼层
弱弱的问一下   github  提交 pr  的流程(或者说 命令行) 是怎么打的?

出0入0汤圆

 楼主| 发表于 2020-4-21 06:06:26 | 显示全部楼层
本帖最后由 路人甲被注册了 于 2020-4-21 06:11 编辑
rei1984 发表于 2020-4-21 06:01
弱弱的问一下   github  提交 pr  的流程(或者说 命令行) 是怎么打的?


额,如果你是在认真问我,你首先要frok目标项目到自己的仓库,然后commit、push修改。最后在网页操作Pull Request合并到原始的分支里面去。

出0入8汤圆

发表于 2020-4-21 06:24:03 | 显示全部楼层
人才!已star表示敬仰!

出0入0汤圆

发表于 2020-4-21 08:08:55 | 显示全部楼层
不明觉厉~~~~

出0入4汤圆

发表于 2020-4-21 08:24:46 | 显示全部楼层
在这里大部分人可能多不明觉历

出0入90汤圆

发表于 2020-4-21 08:32:16 | 显示全部楼层
不错的东西。。。。

出0入0汤圆

发表于 2020-4-21 08:35:23 来自手机 | 显示全部楼层
这代码规模,namespace嵌套太深了吧。

出0入0汤圆

 楼主| 发表于 2020-4-21 12:44:10 | 显示全部楼层
chendaon 发表于 2020-4-21 08:24
在这里大部分人可能多不明觉历

这里发帖是一个不错的图床 :)

出0入0汤圆

发表于 2020-4-21 13:39:48 来自手机 | 显示全部楼层
不明觉厉

出0入0汤圆

发表于 2020-4-21 13:44:28 | 显示全部楼层
下面用的 Libuv 库?  看着好眼熟

出0入0汤圆

发表于 2020-4-21 16:20:08 | 显示全部楼层
学习一下

出20入25汤圆

发表于 2020-4-21 19:11:57 | 显示全部楼层
楼主你这东西感觉很厉害,目前最大的困哪不是哪个库好用,而是怎么用。

出20入25汤圆

发表于 2020-4-21 19:12:48 | 显示全部楼层
比如你现在是实现HTTp Server的功能。但是真正比如要实现一个物联网系统,怎么配合使用太关键了。

出0入0汤圆

发表于 2020-4-21 22:08:40 | 显示全部楼层
有木有用C写的推荐, 不懂CPP啊

出0入0汤圆

发表于 2020-4-21 22:26:02 | 显示全部楼层
看到一串串的括号 分号,完全看不懂. 还是放弃cpp了.
server.setMessageCallback([](uv::TcpConnectionPtr

出0入0汤圆

发表于 2020-4-22 01:52:09 来自手机 | 显示全部楼层
miaoguoqiang 发表于 2020-4-21 22:26
看到一串串的括号 分号,完全看不懂. 还是放弃cpp了.
server.setMessageCallback([](uv::TcpConnectionPtr ...

lamda函数,也就是匿名函数。

出0入0汤圆

发表于 2020-4-22 22:27:24 | 显示全部楼层
不错哦 依赖什么东西呢?

出0入0汤圆

发表于 2020-4-23 08:54:12 | 显示全部楼层
表示看不懂,不过感觉很厉害的样子
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 08:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表