游戏资源传输服务器

目录

项目简介

使用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 删除成功

相关推荐
IMPYLH5 分钟前
Linux 的 numfmt 命令
linux·运维·服务器·bash
sunz_dragon20 分钟前
Claude Code / Codex Git 版本管理完整使用指南
服务器·人工智能
领尚21 分钟前
openclaw 极简安装(Ubuntu 24.04 server)
linux·运维·ubuntu
Gofarlic_OMS36 分钟前
Windchill的license合规使用报告自动化生成与审计追踪系统
大数据·运维·人工智能·云原生·自动化·云计算
SPC的存折43 分钟前
3、主从复制实现同步数据过滤
linux·运维·服务器
SPC的存折1 小时前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
xcbrand1 小时前
文旅行业品牌策划公司找哪家
大数据·运维·人工智能·python
SPC的存折1 小时前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
风吹迎面入袖凉1 小时前
【Redis】Redisson分布式锁原理
java·服务器·开发语言
cyber_两只龙宝1 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle