网狐IOCP压缩版

最初研究网狐是14年的时候,一转眼已经是18年了,这几年也做了写乱七八糟的开发,期间也做了些网络层的开发,自我感觉良好,最近做的项目主要负责服务器方面,CS架构的。一开始写了个CSocket简单的服务器,就是网上常见的结构,封装下,在继承下,记得13年在深蓝培训时候老师就是这样写的,测试的时候发现批量登录导出是BUG,经不起大规模的登录。估计主要是自己对MFC封装的CSocket了解不深,唉,这能换网络内核,之前也学了很多IOCP理论知识,也看了很多DEMO,可惜的是这些封装的都不是很好。这个时候想起国内知名VC++写的远控gh0st,也就是红狼远控,据说他的网络内核写的不错,自己也看过他的源码,3.6和3.78版本,像现在市面上常见的远控,DDOS管理端都是抄写gh0st的。我把他的网络层用到自己的项目上,刚开始还好,后来也发现了不少致命BUG,
1.他是自己写的CBuffer管理内存,其实这个类不是很安全,CopyMemery的时候就没有检查,出现了偶现的拷贝内存出界
2.有的时候莫名其妙的进入某个锁里面出不来了,导致服务器卡死
以上两个BUG很可能是自己不正确使用人家的IOCP模块导致,因为用人家的自己的项目的时候稳定的一B啊,用到自己项目就偶现崩溃能,花了1-2天时间不论自己怎么改都没解决以上两个BUG,也有可能这个模型他写的本身就有BUG,只是他自己的项目没有触发而已,因为gh0st这个项目服务器只会下发简单的指令数据,数据量很小,我自己的项目登录的时候服务器会下发几十K的数据给登录端,可能这样就会触发BUG了吧,只能这样帅锅了。由于项目还是挺紧的,没有足够时间查找原因只能赶紧换网络内核。这个时候我想到了网狐6603的IOCP,这个东西就是写的太规范了,导致简单的IOCP代码很大,附加的辅助类很多。我花了两天时间把它压缩成了一个精小版,


下面这个链接是我缩减之后的代码:

https://download.csdn.net/download/liujiayu2/10492964


遗留问题:
1.由于不太会使用去掉了网络事件(收发数据、网络接受、网络断开)进队列,发的时候直接发送,接收的时候直接回调。不知道原作者都放进队列里面有哪些确切的好处。
暂时先这样,后续更新。。。

2.经过实验测试,这个服务器模型到1400个左右客户端,消耗内存140兆,就到达了上线,新上来的客户端登录不上去。唉,这个效果还没有gh0st上限高,gh0st上线3000个客户端松松的没压力,但是gh0st就是不稳定,看来还要寻找其他高效服务器。研究下boost的asio吧。


猜你喜欢

转载自blog.csdn.net/liujiayu2/article/details/80772904
今日推荐