游戏资源传输服务器

目录

项目简介

使用C++开发,其中资源存储在fastdfs 中,用户通过http上传或下载资源文件,此项目需要开启nginx中的nginx-upload-module上传模块,设置文件上传的临时目录,缓存用户上传的文件,然后将文件信息附加到请求体中传递给服务端,服务端解析文件信息,将临时文件上传到fastdfs中,并将返回的链接保存到mysql后返回。

用户通过从mysql获取fastdfs返回的长链文件地址,然后通过nginx中的ngx_fastdfs_module模块从fastdfs下载对应资源,实现资源下载。

项目实现

nginx配置

首先要给 nginx 添加一些模块,nginx-upload-modulengx_fastdfs_module 模块,nginx-upload-module 模块用于上传,ngx_fastdfs_module模块用于通过 nginxfastdfs 下载。

这里设置了临时文件保存目录 /root/tmp,用来临时保存上传的文件,还设置了在请求体中添加的一些临时文件对应的信息一起传递给服务端。

可以从后续服务端的日志输出中看出这些配置是生效了的

服务器逻辑图

下图为传输服务器核心逻辑

项目代码简介

reactor 模型部分

头文件声明socket基础类,包含回调函数和一些socket创建,设置相关方法

实际上就是将C语言中 socket ,bind,listen,accept等方法封装成C++的形式

接收连接

epoll事件循环

文件传输部分

解析出从nginx中传过来的相应文件字段

然后将临时文件存入fastdfs,成功则将上传的文件信息存入mysql

项目演示

视频演示

资源传输服务器项目演示

演示分析

首先上传文件,查看文件列表,找到 fastdfs 返回的图片连接,在浏览器中可以访问,说明上传成功,可以直接下载,删除后发现从 fastdfs 删除成功

相关推荐
呆呆敲代码的小Y2 分钟前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
roman_日积跬步-终至千里30 分钟前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
我的offer在哪里43 分钟前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎
野犬寒鸦1 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
HalvmånEver1 小时前
Linux:线程互斥
java·linux·运维
串流游戏联盟1 小时前
启程!手机也能邂逅暖暖万相奇观
游戏·远程工作
JY.yuyu2 小时前
Docker常用命令——数据卷管理 / 端口映射 / 容器互联
运维·docker·容器
User_芊芊君子2 小时前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评
alice--小文子2 小时前
cursor-mcp工具使用
java·服务器·前端
lpruoyu2 小时前
【Docker进阶-06】docker-compose & docker swarm
运维·docker·容器