HyperstyLEE / project_linux_ftp_system

这是基于Linux系统的 ftp系统能实现文件的上传和下载

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

project_linux_ftp_system

这是基于Linux系统的 ftp系统能实现文件的上传和下载

Linux系统编程大作业

一、实验题目 实现一个FTP服务系统

二、实验目的 通过该实验,掌握Linux环境下的多线程/进程编程技术、文件操作、用户权限管理、进程间通信技术 三、实验要求 基于客户/服务器交互模式,采用TCP/IP通信协议,实现一个支持远程文件传输的客户/服务器软件,支持文件的上传和下载。其中客户端软件命名为myftp,服务器软件命名为ftpserver,具体功能需求如下: (一)服务器 1)启动方式。执行ftpserver [IP地址] port启动FTP服务。其中IP地址为可选项。若不提供服务器IP地址,FTP服务将自动绑定到本地网络的IP。 2)用户认证与权限管理。为FTP客户提供基于用户名/密码认证的服务模式,只有授权用户才可以访问FTP服务。与此同时,对文件/目录的访问,也实现基于授权的访问机制,即只有授权用户才可以对指定文件进行读写操作。用户只有在具备写权限操作的目录上才能上传文件。(可直接集成Linux服务器系统的用户管理) 3)并行执行功能。为提高系统性能,服务器将采用多进程/线程技术响应客户请求。当客户通过身份验证后,服务器将创建一个新的进程/线程来响应用户请求,提供服务。 4)服务器支持的客户文件操作。登录成功后,客户可在服务器执行以下操作:创建/删除目录(mkdir/rmdir)、显示当前路径(pwd)、切换目录(cd)、查看当前目录下的所有文件(ls)、上传单个/多个文件(put/mput)、下载单个/多个文件(get/mget)。 5)服务传输模式。支持二进制(默认)及ASCII传输模式。用户可通过执行binary/ascii命令切换传输模式。 6)站点计数与用户管理功能。统计服务器站点的当前活动用户数及自运行以来的访客总数。系统管理员可在服务器软件运行终端窗口执行以下命令: A)count current:当前活动用户数 B)count all:显示系统访客总数 C)list:显示当前在线的所有用户的用户名 D)kill username:强制删除某个用户。 E)quit:关闭ftp服务器软件。 7)其他功能。对用户错误输入提供容错保护,即当用户输入错误命令时,需向客户端返回出错提示信息。 8)可选功能(加分)。 A)在服务器端为访问频率最高的文件建立缓冲区(可采用共享内存技术),以便提高服务器端的性能。 B)实现断点续传功能。 (二)客户端 1、登录管理。客户端在shell中输入myftp username:passwd@ftp-server-ip:ftp-server-port登录ftpserver。若通过身份验证,服务器将向客户回显"you are client #."(#为第几位用户)并显示ftp命令输入提示符myftp>;否则显示"username doesn't exist or password is error!"。 2、文件操作命令。在客户端执行基本文件操作:创建/删除目录(lmkdir/lrmdir)、显示当前路径(lpwd)、切换目录(lcd)、查看当前目录下的所有文件(dir)、上传单个/多个文件(put/mput)、下载单个/多个文件(get/mget)。 3、退出系统。用户执行”quit”断开连接,结束当前FTP会话。 (三)作业提交要求 1、将客户端源码和服务器源码(要求采用Makefile脚本构建)分别放入命名为ftpclient和ftpserver文件夹中,连同实验报告打包,命名格式为:学号1#学号2...。 2、答辩的ppt,包括:设计思路和流程图(包括主要数据结构及其说明、测试数据的设计及测试结果分析),以及实验体会(包括实验中遇到的问题及解决过程、产生的错误及原因分析)

About

这是基于Linux系统的 ftp系统能实现文件的上传和下载


Languages

Language:C 97.4%Language:C++ 1.5%Language:Makefile 0.8%Language:Shell 0.3%