搜索
bottom↓
回复: 21

发一个开源C++网络库

[复制链接]

出0入0汤圆

发表于 2020-1-2 14:57:02 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 路人甲被注册了 于 2020-1-2 15:01 编辑

本人维护了三年,接口简洁,性能较好,支持windows/linux平台,modern C++风格,指针内存管理较为安全。做过压测,稳定线上运行。
项目地址,https://github.com/wlgq2/uv-cpp
欢迎star,issue,pr。

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出10入23汤圆

发表于 2020-1-2 15:15:58 | 显示全部楼层
和HP-SOCKET相比如何?

出0入0汤圆

 楼主| 发表于 2020-1-2 15:32:02 来自手机 | 显示全部楼层
zouzhichao 发表于 2020-1-2 15:15
和HP-SOCKET相比如何?

简单看了下你说的这个库,对于客户端来说它是Client独占一个线程,我是每一个EventLoop占一个线程,这样一个线程可以管理多个客户端,至少对于多客户端场景后者性能好很多(事实上我工作上有多客户端场景)。
其次,它是一个组件很多比较重的一个库,我想做的是一个轻量级开箱即用的一个库。

出0入0汤圆

发表于 2020-1-2 15:42:33 | 显示全部楼层
有没有vs2013的项目例子

出0入0汤圆

 楼主| 发表于 2020-1-2 15:44:51 来自手机 | 显示全部楼层
lrzxc 发表于 2020-1-2 15:42
有没有vs2013的项目例子

我用vs2017,其他版本只能自己移植。

出0入0汤圆

发表于 2020-1-2 15:46:45 | 显示全部楼层
路人甲被注册了 发表于 2020-1-2 15:44
我用vs2017,其他版本只能自己移植。


谢谢,我试试。.net框架有啥要求没

出0入0汤圆

 楼主| 发表于 2020-1-2 15:49:56 来自手机 | 显示全部楼层
lrzxc 发表于 2020-1-2 15:46
谢谢,我试试。.net框架有啥要求没

不基于.net,只要编译器能支持C++11就行,你可以试试linux环境,有个Cmake,可能简单点。

出0入0汤圆

 楼主| 发表于 2020-1-2 16:29:41 来自手机 | 显示全部楼层
zouzhichao 发表于 2020-1-2 15:15
和HP-SOCKET相比如何?


我在写完初版时候,某个人跟我说这个库很像360的evpp,看了下发现确实很像,(evpp比我早半年)架构都很像。evpp还提供了一个nsq的例程,我因为工作需要也写了一个nsq的协议。

出0入0汤圆

发表于 2020-1-2 17:34:04 | 显示全部楼层
对于还坚持在C++一线的同志表示敬佩,用了golang后,表示很难回去了,除了某些嵌入式的场合还得继续用

出0入0汤圆

 楼主| 发表于 2020-1-2 17:37:52 来自手机 | 显示全部楼层
本帖最后由 路人甲被注册了 于 2020-1-2 17:45 编辑
yj_yulin 发表于 2020-1-2 17:34
对于还坚持在C++一线的同志表示敬佩,用了golang后,表示很难回去了,除了某些嵌入式的场合还得继续用 ...


你可以试试rust

出0入0汤圆

发表于 2020-1-2 17:50:16 | 显示全部楼层

rust能通过编译的时候,感觉go的代码早已经上线了,
go真hold不住的时候,还是重操C++,毕竟资源丰富,可操作性更强

出0入0汤圆

发表于 2020-1-2 18:09:10 | 显示全部楼层
不错不错,star支持

出0入0汤圆

 楼主| 发表于 2020-1-2 18:11:45 来自手机 | 显示全部楼层
本帖最后由 路人甲被注册了 于 2020-1-2 18:19 编辑
yj_yulin 发表于 2020-1-2 17:50
rust能通过编译的时候,感觉go的代码早已经上线了,
go真hold不住的时候,还是重操C++,毕竟资源丰富,可 ...


语言什么个人无所谓(重要的是给多少钱),我也写go,不是基于个人喜好,而是项目需要。现代C艹内存方面已经很大优化了,只要稍微注意下weak引用RC可以很安全,而且RC内存是实时释放,golang的GC会导致程序停顿,在某些场合不能接受(比如高频交易),协程性能比异步回调稍弱,其实应该是库层面要做的事情。C艹比较好的东西比如RAII,相对golang的defer就很鸡肋。
C艹的问题在于,特性太多,没有限制,不同人写的可能完全是不同风格代码。(还有模板元这种奇技淫巧…)

也可能其他语言需求更改时候稍微改几行代码,golang在写if
interface{} 转换     :)

出0入0汤圆

发表于 2020-1-2 19:18:02 | 显示全部楼层
star一下

出0入0汤圆

发表于 2020-1-2 20:04:25 | 显示全部楼层
可以在嵌入式Linux使用吗?

出0入169汤圆

发表于 2020-1-2 20:44:29 | 显示全部楼层
yj_yulin 发表于 2020-1-2 17:34
对于还坚持在C++一线的同志表示敬佩,用了golang后,表示很难回去了,除了某些嵌入式的场合还得继续用 ...

啥?我公司一个旧的go项目领导表示hold不住,想要改成C++, 目前核心的模块已经改好。。。

出0入0汤圆

发表于 2020-1-2 20:52:24 | 显示全部楼层
看了一下,核心框架跟陈硕的 muduo很像

出0入0汤圆

 楼主| 发表于 2020-1-2 20:59:49 来自手机 | 显示全部楼层
hexenzhou 发表于 2020-1-2 20:04
可以在嵌入式Linux使用吗?

前提是嵌入式编译器gcc 4.8以上。

出0入0汤圆

 楼主| 发表于 2020-1-2 21:06:33 | 显示全部楼层
danielyuan 发表于 2020-1-2 20:52
看了一下,核心框架跟陈硕的 muduo很像

确实读过muduo的源码,相对于muduo来说,它跨平台,增加了TCP发送/接受包的机制(可以方便的从数据流中解析成自定义格式的数据包),没有实现线程池(基于C++11基本的线程池实现也很简单),它内核基于libuv,libuv是nodejs的底层,经历过各种生产环境验证比较稳定。

出0入0汤圆

发表于 2020-1-3 00:24:08 来自手机 | 显示全部楼层
128个赞,学习一下

出0入0汤圆

发表于 2020-1-3 10:34:40 | 显示全部楼层
lxvtag 发表于 2020-1-2 20:44
啥?我公司一个旧的go项目领导表示hold不住,想要改成C++, 目前核心的模块已经改好。。。 ...

嗯,肯定有很多高性能项目是go搞不好的,如果处在那个领域,自然还是得找更加合适的方案,
就像我们这里面用mcu的一般就能满足绝大部分要求,但是总有需要用fpga的时候

出0入8汤圆

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

本版积分规则

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

GMT+8, 2024-6-27 04:36

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

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