Skip to content

XU817628/EPlayerServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EPlayer 易播服务器

高性能并发服务器,完成易播客户端账户验证功能

开发环境

Visual Studio Code
Ubuntu-22.04

运行步骤

1.进入到build文件夹下
2.执行命令cmake..
3.执行命令make
4.执行命令 ../bin/app

配置

服务器默认ip:0.0.0.0 port:9527
在include/Server/CServer.h 宏定义可修改


项目介绍

本项目设计的主要模块有:

  • 网络通信模块
  • EPOLL模块
  • 线程与线程池模块
  • HTTP模块
  • 数据库模块
  • MD5解密模块
  • 日志模块
  • 进程模块

进程架构设计

线程是CPU独立调度的最小单位,进程是拥有资源的最小单位,本项目采用多进程多线程模式,实现资源的最大化利用,将一个整体的功能分散到多个进程之中,避免多个线程在一个进程内竞争,无法充分利用资源
image
如图,方框部分为主进程,圆形部分为项目子进程,项目会在开辟两个子进程

  • 日志服务器子进程:开启运行日志服务器,负责接收客户端连接和处理客户端通信(日志),向文件中写日志
  • 客户端处理进程:主进程中的网络服务器负责接收客户端连接,将连接好的客户端客户端套接字发送给客户处理子进程,客户端子进程负责处理具体的连接事件和通信事件

工具类

相关文件储存在public文件夹中

  • 字符串类 Buffer
    功能:继承string类,对运算符进行重载,提供多个构造,使得字符串操作更加简化
    对运算符重载之后,对于各种不同参数类型的函数传参,不需要显示类型转换即可传递
  • 函数对象类 function
    函数对象绑定:将函数名和函数参数进行绑定,在合适的时机直接调用 函数名(),即可调用函数
  • json类 json
    已有的库文件,支持json序列化和反序列化

进程模块

相关文件储存在process文件夹中
功能:创建进程,进程间传递文件描述符,切换为守护进程

  • 创建进程 使用fork()函数创建子进程
  • 进程间通信
    使用socketpair()创建一对已连接的套接字对,向struct msghdr 结构体填充消息,向struct cmsghdr辅助信息结构体填充文件描述符,通过sendmsg()和recvmsg()进行通信 参考:https://www.yuque.com/xiaojie-cyaqx/qmbzdh/xs93lxs2r8w2nv2o
  • 守护进程
    创建守护进程流程图意图:
    image
    方法:创建子进程,主进程退出,子进程设为会话组长→创建孙进程,子进程退出→孙进程关闭标准输入输出和标准错误文件描述符,umask(0)设置使用最大权限创建文件,屏蔽子进程退出信号

网络通信模块

此模块是对基本的网络通信流程进行一个封装,相关文件位于 Socket文件夹中 image

  • 地址类CSockParam:储存套接字地址信息
  • 套接字类CSocket:套接字通信全家桶
  • I/O复用EPOLL类:对EPOLL操作进行封装

MD5加密模块

此模块有现成的API,调用API即可,相关文件都位于encrypy文件夹中

下面加一行测试文字

About

基于Linux的易播服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 88.4%
  • C++ 9.1%
  • Makefile 2.3%
  • Other 0.2%