简单易用的跨平台网络库
windows下使用iocp
linux下使用epoll ET模式
能满足简单游戏服务器的需求
需要以下库支持:
mysql-connector
openssl
libcurl
- 新增了客户端Socket的实现(
ClientSocket类),现在可以通过它与ServerSocket结合做多进程服务器了 - 新增了http客户端的实现(需要libcurl库),以队列的形式处理简单的http请求
- 优化了DBStatement的
<<操作符,使得更容易绑定字符串(使用std::string)和Blob字段了(使用ByteArray) - 优化了DBStatement的
>>操作符,使得更容易读取Blob字段了(使用ByteArray) - 优化了Recordset的
>>操作符,使得更容易读取Blob字段了(使用ByteArray) - 优化了事件的回调函数,使用C++11标准的
std::function定义EventCallback - 原
ClientSocket类更名为Client,给Client新增了onDisconnected和update函数供重载,其中onDisconnected会在客户端断开连接时调用,update则会在每次ServerSocket的update时(通常是主循环)调用 - 将判定不活跃的客户端时使用的时间改为了
GetTickCount64,不会因为修改服务器时间导致客户端意外掉线(游戏测试常改时间) - 优化了
ServerSocket的退出和析构,使之释放更全面 - 修复了
ServerSocket在windows下给Client的ip地址不正确 ByteArray新增了toHexString方便把字节转化成16进制字符串,优化了ByteArray的resize和truncate方法- 新增工具类
TimeTool,提供常用的方法如获取unix时间戳、获取今天(或其他时间)的凌晨0点整的时间戳、获取本月(或其他时间)的第一天凌晨0点整的时间戳、判断一个时间是否昨天或更早以前 - 修复一个
Timer计时器会引起崩溃的BUG - 丰富
String类的工具函数,如random随机生成字符串 - 新增工具类
Math,使用C++11标准库的梅森旋转算法生成随机数;新增平面向量Vector2D类 - 优化
Log类使用的时间函数,避免使用ctime或localtime等不安全的C API - 提供简单的示例工程GameServer以及相关第三方库,vs2013环境已编译测试通过
数据流方式读写socket
使用ByteArray的<<和>>操作符方便快捷地读写二进制数据
mysql数据库查询队列,支持statement查询方式,缓存已prepare过的语句提高执行效率
高效易用的计时器,使用C++11的新特性std::bind和std::function作为计时回调
实现一个封闭式数据流替代ServerSocket中的ByteArray,因为ByteArray为了提供内部实际控制的内存指针给外部访问,频繁进行内存复制和移动
实现一个回环容器
优化String类的一些工具方法,减少对第三方库的依赖
小弟不才,有BUG和不妥之处欢迎吐槽指点