Skip to content

Latest commit

 

History

History
65 lines (31 loc) · 2.92 KB

README.md

File metadata and controls

65 lines (31 loc) · 2.92 KB

基于cpp+unity的前后端数据库Demo

一个数据库的Demo,c++做为服务端,unity做为客户端,使用mysql数据库保存数据,protobuf进行协议存储与解析

c++服务器:

  • 连接Mysql数据库,进行用户数据的增删改查
  • 使用protobuf进行通信协议解析 协议格式为:协议长度+协议ID+协议内容
  • 对原生socket进行一下小的封装,更加便利与安全
  • 使用select实现非阻塞I/O
  • 使用map+智能指针+protobuf反射的方式实现不同协议的分发和处理
  • 封装一个可变长度的char数组接收消息,解决消息的粘包和分包问题

unity客户端:

  • 封装一个可变长度的byte数组接收消息,解决粘包分包问题
  • 使用Dictionary+C#反射实现不同协议的分发和处理
  • 使用事件监听处理登录、连接、断开连接等事件

部分效果展示

image-20201110125755029

image-20201110125933843

image-20201110130050417

image-20201110130123227

image-20201110130159893

云服务器的服务端配置

  1. 在云服务器上配置客户端和服务端通信的对应端口(我代码里写的是8866,当然也可以自己修改)出/入方向,都是TCP协议

  2. 下载并安装Mysql数据库下载地址(PS:选择体积大的那个下载,小的是用于web的)

  3. 如果.exe的同级目录下没有这两个dll就在C:\Program Files\MySQL\Connector C++ 8.0\lib64下找到并复制过来

image-20201110124131832

  1. 找到文件夹下的backup.sql文本,这是一个备份的Mysql数据库文件,使用它来恢复基本的数据库信息,用于服务端的数据库连接。Mysql如何进行数据备份和恢复可以看这个

  2. 启动服务器的.exe文件,如果提示缺少什么dll就直接从本机的C:\Windows\System32下找到对应的文件拷贝过去

  3. 在命令行中输入对应云服务器的IP地址,一定是云服务器的私有IP,127.0.0.1和公有ip都不行(PS:客户端连接云服务器使用的就是公有IP了),出现下图的服务器已启动就表示服务器开始正常工作了

    image-20201110124729392

客户端设置

在物体组件上设置服务端的IP地址和端口号

image-20201110130515789