Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

worrysprite/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

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /