Linux服务器端程序设计V1

本文介绍了一款Linux服务器端程序的设计方案,支持多客户端并发文件传输,并确保数据完整性。通过多线程处理客户端请求,利用CRC或SHA进行文件校验,并自定义通信格式以响应客户端查询数据库的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux服务器端程序V1.0

功能要求

  1. 能接收来自远程客户端(有可能是多个客户端同时)发送的图片以及视频数据;
  2. 确保接收的数据的完整性;
  3. 读写数据库:为远程客户端提供课程信息,往数据库中写入课程视频的路径;

设计思路

  1. 服务器端程序采用多线程实现多客户端并发;
  2. 使用CRC或者SHA进行文件完整性校验;
  3. 响应远程客户端的查询数据库的请求貌似要求自己定义一种通信格式:命令模式,数据传输模式(文件名,数据,校验值);

任务进度

20160728: 多客户端文件传输;


设计细节

1 服务器端设计结构设计

客户端表示:

// 客户端表示
typedef struct{
    int sockt_fd;              // 客户端socket描述符
    sockaddr_in addr;    // 客户端地址
    pthread_t pid;           // 数据处理线程号
} lm_client; // 前缀lm_是为了防止命名

定义一个TCPSERVER类来实现服务器端程序的功能。

TCPSERVER的成员变量(暂未考虑如何操作数据库)

类型变量名含义备注
intm_server_socketServer Socket号
std::setm_clients远程客户端
pthread_tm_pidAccept客户端连接请求处理线程号
pthread_tm_pidManage管理线程号用于创建和注销数据处理线程

TCPSERVER的成员函数

类型函数原型输入参数输出参数备注
publicbool Initialize(unsigned int nPort)nPort: 端口号true:初始化成功;false:初始化失败服务器初始化函数
privatevoid Uninitialize(void)服务器反初始化函数
privatestatic void* AcceptThread(void);连接请求处理线程
privatestatic void* ManageThread(void);连接管理线程
privatestatic bool FileReceive(char* filepath);filepath:文件路径文件传输是否成功文件接收函数
privatestatic bool CmdReceive(char* message);message:接收到的消息是否处理成功命令接收函数
privatestatic void CmdHandler(int cmdcode);cmdcode:命令的编码命令解码函数以及处理

数据库操作函数

  1. 查询教师账号信息——用于登录;
  2. 查询教师对应的课程信息——用于客户端界面显示;
  3. 写入课程视频路径

源代码说明

文件名文件说明
TCPSERVER.cpp服务器类TCPSERVER的定义
TCPSERVER.h服务器类TCPSERVER的声明
Headers.h头文件包含以及部分辅助函数声明
Headers.cpp辅助函数定义
TcpDefines.hTCP传输相关常量、数据结构和回调函数的声明和定义
DatabaseFunc.h数据库操作相关函数的声明
DatabaseFunc.cpp数据库操作相关函数的定义
Communication.h通信格式编解码函数的声明
Communication.cpp通信格式编解码函数的定义




转载于:https://www.cnblogs.com/ustcfighters/p/5717441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值