【UNIX】基于C++语言的FTP模拟系统【C++、QT、Ubuntu系统】

目录

1.设计要求

2.系统需求分析

2.1系统整体需求分析

2.1系统功能需求分析

3.系统设计

3.1系统结构设计

3.2客户端系统功能设计

3.3服务器系统功能设计

4.系统实现

4.1客户端实现

4.2服务器实现

5.源代码


开发语言:C++

开发环境:Ubuntu、QT/C++

1.设计要求

利用Linux环境下Socket API实现FTP模拟系统,该系统分为服务器和客户端两部分,服务端接受客户端连接请求,当接受请求后建立一个服务器分线程,并新建新的Socket连接处理文件传输工作。

客户端提供FTP服务器连接请求,并提供FTP命令相关功能。完成文件在客户端和服务端的传送。将源文件复制到目的目录,服务端和客户端都可以作为源文件端,实现FTP的下载与上传,如果文件存在则覆盖原始文件。

2.系统需求分析

2.1系统整体需求分析

(1)具有简洁、易操作的交互界面;

(2)对于用户的合法操作能够进行正确处理,呈现出正确直观的反馈;

(3)对于非法操作,系统能够做出判断,并向用户反馈错误提示;

(4)能够适应不同流量的访问;

(5)能够满足用户访问不同服务器的需求。

2.1系统功能需求分析

1)客户端功能需求分析

  • 用户注册、登录、注销;
  • 文件下载、下载目录修改、下载进度条;
  • 文件上传;
  • 文件(夹)浏览;
  • 用户帮助。

2)服务器功能需求分析 

  • 服务器启动;
  • 服务器关闭;
  • 文件管理(删除、重命名、移动、复制、编辑等);
  • 用户管理(删除用户);
  • 响应客户端的请求。

3.系统设计

3.1系统结构设计

开发FTP客户端/服务器软件必须遵循FTP的工作模式,FTP的独特优势在于它在两台通信主机之间使用了两条TCP连接,一条用于数据传送,一条用于控制信息的传送。这种将命令和数据分开传送的思想大大提高FTP工作的效率

3.2客户端系统功能设计

1)用户注册

用户注册时,输入用户名和密码。用户名和密码保存在文件中。用户名不可重复。

2)登录与注销

登录时,用户可以选择实名登录或者匿名登录(即游客模式)。不同的登录方式,显示不同的功能权限,增加了服务器的安全性。匿名用户只能下载服务器上的文件。注销将断开客户端与服务器的连接,使所有功能不可用。

3)文件下载

用户单击文件,系统提供下载的目的路径,用户选择路径,单击“确定”,系统开始下载,下载过程中,进度条显示下载进度。

4)文件上传

用户上传文件时,打开本地资源管理器,选择所要上传的文件,即可进行上传。用户上传的文件统一上传至唯一指定的目的文件夹。

5)文件浏览

用户单击“浏览”,系统显示出FTP文件库中的文件夹及文件,单击文件夹,进入文件夹内部;单击文件,会出现“下载”按钮、“取消”按钮及修改下载目录的按钮。

4)用户帮助

单击“帮助”,显示各按钮的作用。

3.3服务器系统功能设计

1)服务器启动

单击服务器“启动”按钮,可以启动服务器,使其进入监听状态。服务器创建一个空的套接字,将空套接字和本机IP地址和端口号绑定,之后成为一个三元组,指定一个socket为监听接口,使socket可以接收网络连接请求。

2)服务器关闭

关闭服务器,服务器停止监听,并且关闭操作窗口。

3)文件管理

文件管理包括文件删除、文件重命名、文件移动、文件编辑等。单击“文件管理”,系统跳转值FTP文件库的资源管理器中,供管理员进行管理操作。

4)用户管理

用户管理主要功能为删除用户。

4.系统实现

4.1客户端实现

1)连接服务器

用户进入系统时,需要填写IP地址以作为连接服务器,同一IP下有三个以端口区分的服务器来满足大流量访问的压力。用户也可以选择“匿名登录”。

                                                

                                                                  图4-1客户端连接服务器界面

2)用户登录

用户登录时,需填写正确的“账号”、“密码”,若填写错误,系统将进行错误反馈。

                                                

                                                                        图4-2 用户登录界面

3)用户注册

用户注册时,需填写“用户名”、“密码”、“确认密码”。用户名与已注册用户不能重复,密码与重复密码必须一致。

                                                       

                                                                           图4-3 用户注册界面

4)游客模式

用户登录系统时,选择匿名登录,即进入“游客模式”。该模式下,用户仅具有“浏览”和“下载”功能的权限。

                                            

                                                                            图4-4 游客操作界面

5)用户模式

用户登录系统时,用户选择服务器登录,输入账号及密码,登录成功后,进入用户模式,该模式下,用户拥有“浏览”、“下载”、“上传”等功能。

                                   

                                                                   图4-5 普通用户登录界面

6)浏览文件

用户浏览文件时,系统左侧显示文件夹,右侧显示文件。单击文件夹,进入该文件内层;单击文件,可以选择进行下载。

                                     

                                                                       图4-6 浏览文件界面

7)下载文件

文件下载的原理就是在本地新建同名文件并在数据通道接收数据,然后将数据写入文件。客户端文件下载的过程如下:

选中需要下载的文件,点击“下载”按钮,触发函数,调用read()函数将数据读入缓冲区中,然后在的调用write()函数从缓冲区中读出数据,写入指定目录的指定文件中。

下载时,可以修改目录,将文件下载至指定目录下。

                                         

                                                                            图4-7 下载文件界面

8)上传文件

文件上传的原理是读取本地文件数据,将数据通过数据通道发送给服务器,服务器再将数据写入远程文件。客户端上传文件,先选中需要上传的文件,单击“上传”按钮,触发函数,进度条显示上传进度。

                                   

                                                                               图4-8上传文件界面

4.2服务器实现

1)文件管理

服务器进行文件管理时,进入资源管理器,可以对文件夹及文件进行“移动”、“复制”、“重命名”、“删除”等操作。

                                    

                                                                             图4-9 文件管理界面

2)用户管理

服务器端对用户的管理,仅设置“用户删除”功能。

                                                      

                                                                            图4-10 用户管理界面

3)响应请求

服务器对客户端的请求的响应处理,是系统的核心,是系统能正常工作的基础。服务器对用户的“登录”、“注册”、“退出”、“浏览”、“帮助”、“上传”、“下载”等功能进行响应的处理反馈。

                                                         

                                                                                图4-11服务器响应界面

5.源代码

链接:https://pan.baidu.com/s/1-1v_6X3-Q11j-DRu9ts2FA 
提取码:nvkz

猜你喜欢

转载自blog.csdn.net/Aibiabcheng/article/details/106695163
今日推荐