Skip to content

meihao1203/FTP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 

Repository files navigation

FTP 项目

运行描述:

项目分为两个部分,服务器端server和客户端client; 
* 先运行服务器端./run.sh(非密码验证)
     (如果要直接去bin/文件夹下自己执行可执行文件,要修改src/下的server.c文件夹下第87行代码,<br>
     打开log文件的相对路径路径“../log/log”重新编译后执行:/server_noverify ../conf/server.conf)
* 运行客户端./client_noverify ip port(ip和端口号在conf文件夹里的server.conf文件里);
* 程序有日志记录功能,log文件存放在server/log; 	
* 要执行带密码验证的,服务器端要在超级用户下执行,在bin/文件夹下运行./server_verify ../conf/server.conf
程序采用进程池来实现,在服务器开启监听listen客户端连接的时候所有子进程都已经创建好并进入S睡眠状态,默认只设置了5个业务进程,可以去头文件func.h里面自行更改重新编译

功能:

1.cd 进入对应目录
2.ls 列出相应目录文件 (与LINUX系统下 "ls -l" 效果相同)
3.puts 文件名  将本地文件上传至服务器
4.gets 文件名  下载服务器文件到本地
5.remove 删除服务器上文件
6.pwd 显示目前所在路径
7.mkdir 当前路径创建文件夹
8.密码验证,运行./server_verify ../conf/server.conf 是带密码验证的,必须在root权限下运行
9.日志记录,log文件记录客户端操作
10.断点续传,文件没下载好是.mh结尾的临时文件,可以gets或puts继续下载或上传
11.mmap将大文件(>300M)映射进内存再进行网络传出,多大的文件进行映射已经放到func.h里

注: 如果自己要重新编译要把所有文件放到一起,由于项目采用了crypt进行linux自带的SHA-512加密验证,编译的时候要加上 -lcrypt; 执行带加密验证的二进制文件,用户名密码是server_verify所运行的电脑的用户的;

LICENSE

08052018更新,服务端增加log文件夹单独存放日志文件、增加不带密码验证的运行脚本,可直接./run.sh启动服务端,readme增加程序运行截图

程序开始服务器端执行"ls -ll"

开始服务器端文件

程序开始客户端bin/文件夹下文件

程序开始客户端目录下bin/下文件

服务器端启动系统中的进程

客户端运行,执行ls命令

客户端执行pwd命令

客户端执行gets命令

客户端执行gets命令获取服务器端的视频文件后客户端下的文件情况


md5sum验证下载下来的文件是不是和服务器端完全一致

客户端执行remove命令

客户端执行mkdir命令

客户端执行cd命令

最终服务器端主目录下文件

测试运行的程序截图中的视频文件84mb,没有push到项目之上。
下面是测试大文件的mmap映射上传和断点续传

客户端下载大文件,下载一半断开

客户端连接继续下载

下载的大文件MD5码比对

About

Linux下进程池实现的网盘FTP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published