ftp_file_server服务器
1. 简介
实现了一个简单的ftp文件服务器,总共支持注册、登录、上传、下载、删除、新建文件夹、切换目录、显示当前路径、显示文件等功能
2. 具体实现
2.1 服务端
主要负责处理客户端发来的指令,对于复杂指令即比较耗时的指令(get, put)用子线程进行处理,其余指令用主线程处理
2.1.1 线程池
主要分为线程池的创建和启动
// 定义单个任务
typedef struct node {
int sockFd;
struct node *next;
short flag; // 下载任务为0, 上传任务为1
char fileName[10]; // 文件名
int epfd;
}Node_t, *pNode_t;
// 定义任务队列
typedef struct que {
pNode_t queHead, queTail;
int capacity;
int queSize;
pthread_mutex_t mutex;
}Que_t, *pQue_t;
// 定义线程池
typedef struct factory {
Que_t que; // 任务队列
pthread_t *pthid; // 子线程
int threadNum; // 线程数
pthread_cond_t cond; // 用于通知子线程
short startFlag; // 是否启动
MYSQL mysql