Skip to content

yangmaoer/GameServer

 
 

Repository files navigation

GameServer

简单易用的跨平台网络库

windows下使用iocp
linux下使用epoll ET模式
能满足简单游戏服务器的需求
需要以下库支持:
mysql-connector
openssl
libcurl


2017/04/20更新:

  • 新增了客户端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新增了onDisconnectedupdate函数供重载,其中onDisconnected会在客户端断开连接时调用,update则会在每次ServerSocketupdate时(通常是主循环)调用
  • 将判定不活跃的客户端时使用的时间改为了GetTickCount64,不会因为修改服务器时间导致客户端意外掉线(游戏测试常改时间)
  • 优化了ServerSocket的退出和析构,使之释放更全面
  • 修复了ServerSocket在windows下给Client的ip地址不正确
  • ByteArray新增了toHexString方便把字节转化成16进制字符串,优化了ByteArrayresizetruncate方法
  • 新增工具类TimeTool,提供常用的方法如获取unix时间戳、获取今天(或其他时间)的凌晨0点整的时间戳、获取本月(或其他时间)的第一天凌晨0点整的时间戳、判断一个时间是否昨天或更早以前
  • 修复一个Timer计时器会引起崩溃的BUG
  • 丰富String类的工具函数,如random随机生成字符串
  • 新增工具类Math,使用C++11标准库的梅森旋转算法生成随机数;新增平面向量Vector2D
  • 优化Log类使用的时间函数,避免使用ctimelocaltime等不安全的C API
  • 提供简单的示例工程GameServer以及相关第三方库,vs2013环境已编译测试通过

目前有以下特征:

数据流方式读写socket
使用ByteArray<<>>操作符方便快捷地读写二进制数据
mysql数据库查询队列,支持statement查询方式,缓存已prepare过的语句提高执行效率
高效易用的计时器,使用C++11的新特性std::bindstd::function作为计时回调

即将进行的更新:

实现一个封闭式数据流替代ServerSocket中的ByteArray,因为ByteArray为了提供内部实际控制的内存指针给外部访问,频繁进行内存复制和移动 实现一个回环容器 优化String类的一些工具方法,减少对第三方库的依赖


小弟不才,有BUG和不妥之处欢迎吐槽指点

About

轻量级跨平台游戏服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 50.2%
  • Makefile 14.7%
  • HTML 10.1%
  • Roff 7.5%
  • C++ 5.3%
  • M4 3.7%
  • Other 8.5%