ftp实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

网络程序设计实验报告实验名称:___基于FTP的文件传输系统_______实验类型:______设计型实验__________指导教师:_______________________专业班级:____________________姓名:_________________学号:_________电子邮件:___________实验地点:_______东9-211_______________实验日期:2013年5月7日实验成绩:__________________________基于FTP的文件传输系统设计摘要:文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP网络体系结构之上,使用socket编程接口编写两个程序,分别为客户程序(client)和服务器程序(server),利用了已有网络环境设计并实现简单应用层协议。关键字:目录一.问题描述及设计思路........................错误!未定义书签。(一)问题描述..............................错误!未定义书签。(二)设计思路..............................错误!未定义书签。(三)实验环境..............................错误!未定义书签。二.详细设计过程..............................错误!未定义书签。三,结论及体会................................错误!未定义书签。3.1客户端的实现.............................错误!未定义书签。3.2服务端的实现.............................错误!未定义书签。四.附录......................................错误!未定义书签。4.1附录A...................................错误!未定义书签。4.2附录B...................................错误!未定义书签。5.参考文献....................................错误!未定义书签。一.问题描述及设计思路(一)问题描述服务器端:1.指定一个目录作为FTP目录(之后所有的文件操作均在此目录下进行)2.接收客户端的命令请求并提供相应的服务。客户端:完成与FTP用户的人机界面,以命令的方式向服务器请求服务,主要的命令有:1.CONNECTIP地址端口号2.指定FTP服务器的IP地址和端口号,连接到服务器。响应:连接成功/失败。3.LOGIN用户名4.用户登录(假设在服务器端有用户管理功能)5.响应:若用户不存在,提示“无此用户”;若用户存在,提示“密码:”;用户输入密码后,若正确提示“登录成功”;若不成功,提示“密码错”。6.3.DIR7.显示FTP服务器的FTP目录的文件列表(假设无子目录)8.响应:目录列表(只要文件名即可)。9.4.GET文件名10.将FTP目录下的文件下载到本地,支持断点续传11.响应:传送成功/失败/无此文件。12.5.PUT文件名13.将本地文件上传到FTP目录,支持断点续传14.响应:传送成功/失败/无此文件。15.6.HELP(客户端和服务器端均有该功能)(二)设计思路1.FTP协议基础FTP是TCP/IPInternetFTP就是己计算机中拷贝至远程计算机上。在TCP/IPFTP标准命令TCP端口号为21Port方式数据端口为20。2.网络文件传输原理在通信的MFC所提供的CSocket类的串行化分在具体实现的时候分别建立有自己的套接字。FTP编程基础3.FTP传输原理FTP协议使用两条单独的TCPFTP21号端口上接收来自客户端的命令连接。当需要传送数Port16.实验环境本次实验采用MFCMFCMyServer和FTPSOCKET。17.详细设计过程1、总体功能模块图(1)服务器端服务器端功能说明:①线程控制:线程类别:选择线程类别,单线程或多线程传送文件线程数设置:若选择多线程,可自行设置线程数目,若选择单线程,则默认线程数目为1②启动服务器:设置好线程控制后,点击“启动”按钮启动服务器端③选取文件:选择要发送给客户端的文件④发送文件:获取要发送文件属性:获取到要传送给客户端的文件的基本属性,包括:文件名,大小(B),已发送多少(B),文件路径发送进度显示:显示给客户端发送文件的进度⑤ChatWithServer:启动采用UDP协议的简单聊天系统,用来与客户端进行通讯(客户端和服务器端都得启动,否则无法收到)⑥Help:显示服务器端使用说明(2)客户端客户端功能说明:①握手服务器:输入服务器端IP地址,点击“握手服务器”按钮,获取服务器端启动的线程数②连接服务器:与服务器进行连接③接收文件:获取接收文件属性:获取到要接收的服务器端传来的文件的基本属性,包括:文件名,大小(B),已接收多少(B),文件存储路径接收进度显示:显示已接收文件的进度④ChatWithServer:启动采用UDP协议的简单聊天系统,用来与客户端进行通讯(客户端和服务器端都得启动,否则无法收到)⑤获取IP地址:获取本机的主机名及IP地址⑥HELP:显示客户端使用说明2、系统结构3、主要功能流程图(1)文件传输流程图2、用例描述(1)文件传送用例描述用例名称:服务器端文件传输参与者:服务器端管理员简要说明:服务器端管理员设置线程类别和启动的线程数目,启动服务器,选取文件进行发送前置条件:服务器端管理员已经运行服务器端程序基本事件流:1.服务器端管理员通过鼠标点击线程类别和线程数目下拉列表框进行设置,然后点击“启动”按钮,启动服务器。2.点击“选取文件”按钮,选择要传送给客户端的文件,在文件属性框中显示出相应文件的信息,点击“发送文件”按钮,进行文件传输。3.点击“退出”按钮,退出服务器端4.点击“帮助”按钮可以查看使用说明5.用例终止其他事件流A1:在按”发送”按钮之前,服务器端管理员随时可以按“退出”按钮,终止与客户端的链接,即终止与客户端之间的文件传送。异常事件流:1.提示错误信息,文件传送失败用例名称:客户端文件传输参与者:客户简要说明:客户输入服务器端IP地址,链接服务器,进行文件接收前置条件:客户运行客户端应用程序基本事件流:1.服务器端选择账户,点击开始服务,则进入监听状态,等待客户端请求。2.客户端输入用户名及密码,若与服务器端匹配,则在文本框中显示连接服务器,登陆用户名。连接失败则显示“连接失败”。3.在client列表框中点击要上传的文件,弹出对话框,寻问是否要上传,点击是,则上传文档至服务器端。并将文档列表显示在列表框中。4.点击终止服务,则退出程序。其他事件流A1:在按”接收”按钮之前,客户随时可以按“停止接收”按钮,终止与服务器端之间的文件传送。在文件开始接收后,点击“停止接收”按钮,也终止与服务器端之间的文件传送。异常事件流:1.提示错误信息,文件传送失败功能设计及主要代码服务器端取得本地地址://sprintf(g_szLocalAddr,%s,GetLocalAddress());if((sListen=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET){printf(错误:Failedtogetasocket%d\n,WSAGetLastError());WSACleanup();return0;}inetAddr.sin_family=AF_INET;inetAddr.sin_addr.s_addr=htonl(INADDR_ANY);inetAddr.sin_port=htons(server-m_Port);//FTP_PORT);if(bind(sListen,(PSOCKADDR)&inetAddr,sizeof(inetAddr))==SOCKET_ERROR){printf(错误:bind()failedwitherror%d\n,WSAGetLastError());return0;}if(listen(sListen,SOMAXCONN)){printf(错误:listen()failedwitherror%d\n,WSAGetLastError());return0;}printf(MiniFtpserver已经启动\n);printf(MiniFtpserver开始侦听\n);if((sAccept=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET){printf(错误:Failedtogetasocket%d\n,WSAGetLastError());return0;}登录设置:intCServer::LoginIn(LPSOCKET_INFpSocketInfo){constchar*szUserOK=331Usernameokay,needpassword.\r\n;constchar*szLoggedIn=230Userloggedin,proceed.\r\n;intnRetVal=0;staticcharszUser[MAX_NAME_LEN],szPwd[MAX_PWD_LEN];LPSOCKET_INFpSI=pSocketInfo;//取得登录用户名if(strstr(strupr(pSI-buffRecv),USER)){sprintf(szUser,%s,pSI-buffRecv+strlen(USER)+1);strtok(szUser,\r\n);//响应信息sprintf(pSI-buffSend,%s,szUserOK);if(SendRes(pSI)==-1)return-1;returnUSER_OK;}if(strstr(strupr(pSI-buffRecv),PASS)||strstr(pSI-buffRecv,pass)){sprintf(szPwd,%s,pSI-buffRecv+strlen(PASS)+1);strtok(szPwd,\r\n);//判断用户名跟口令正确性if(stricmp(szPwd,m_Password)||stricmp(szUser,m_User)){sprintf(pSI-buffSend,530User%scannotlogin.\r\n,szUser);printf(User%scannotlogin\n,szUser);nRetVal=LOGIN_FAILED;}else{sprintf(pSI-buffSend,%s,szLoggedIn);printf(User%sloggedin\n,szUser);nRetVal=LOGGED_IN;}if(SendRes(pSI)==-1)return-1;}returnnRetVal;}客户端:登录到服务器BOOLCFTPCommandProcessor::LogOnToServer(CStringhostname,inthostport,CStringusername,CStringpassword,CStringacct,CStringfwhost,CStringfwusername,CStringfwpassword,intfwport,intlogontype){intport,logonpoint=0;constintLO=-2,ER=-1;CStringbuf,temp;constintNUMLOGIN=9;//支持9种不同的登录方式intlogo

1 / 52
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功