您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > FTP客户机程序设计
FTP客户端机序设计(高性能计算机网络)FTP客户端软件设计培养单位:计算机科学与技术学院学科专业:软件工程(一)班研究生:罗珍珍学号:1049721101495指导教师:严春2012年2月10日FTP客户机程序设计1目录1引言........................................22系统概述......................................32.1FTP客户端结构...............................32.2FTP客户端界面设计及功能操作:................33FTP系统设计原理..............................74FTP详细设计..................................94.1FTP客户端设计思想............................94.2界面布局.....................................94.3程序设计...................................105参考文献:......................................23FTP客户机程序设计2FTP客户机程序设计1,引言进入信息时代,随着互联网普及,只要接上网络,就能从网上找到庞大的数据资源,其内容包罗万象,可以说几乎任何人都可以在Internet资源中找到自己所需要的信息资源。有了网络,使用者不但可以浏览各种各样的信息资源,还能够将自己感兴趣的资源下载到本地机上。由于网络的带宽及各种服务的限制,单纯从页面上下载显得又慢又不可靠,所以就有许多FTP工具提供出来。本软件是用VC++6.0作为开发工具,制作界面。系统有着良好的界面,简单易用,系统开发的总体任务是连接FTP服务器,上传/下载文件、对FTP服务器站点的管理、服务器端提供FTP服务、允许远程登录下载服务器上的文件。本软件的设计,即从需求分析,软件设计到软件功能实现,都始终遵循软件工程的思想和数据库的设计方法。FTP是互联网上使用最广泛的文件传输协议。在互联网早期曾占据整个互联网通信量的三分之一。它主要解决了在不同操作系统下处理文件格式的不兼容性。FTP客户端应该包含以下功能:登录,浏览目录,上传下载。传统方式需要在DOS下输入命令,对于普通用户是件困难的事,但有了FTP客户端软件后,只要轻点几下鼠标即可完成所有操作。它已成为人们不可或缺的软件之一了。FTP客户机程序设计32,系统概述2.1FTP客户端结构系统开发的总体任务是连接FTP服务器,服务器端提供FTP服务、允许远程登录访问服务器上的文件。功能层次图如图1-1所示,FTP服务器端数据流图如图1-2所示。图1-1FTP客户端功能层次图2.2FTP客户端界面设计及功能操作:输入服务器的IP地址,以及登陆用户名和密码,如图(1-3)。FTP客户机程序设计4图(1-3)点击“Connect”建立通讯连接。FTP客户机程序设计5图(1-4)点击“LIST”按钮,如图(1-5):FTP客户机程序设计6点击“QUIT”关闭界面。FTP客户机程序设计73,FTP系统设计原理FTP服务是一种有连接的文件传输服务,采用的传输层协议是TCP协议。FTP服务的基本过程是:建立连接、传输数据与释放连接。由于FTP服务的特点是数据量大、控制信息相对较少,因此在设计时采用分别对控制信息与数据进行处理的方式,这样用于通信的TCP连接也相应地分为两种类型:控制连接与数据连接。其中,控制连接用于在通信双方之间传输FTP命令与响应信息,完成连接建立、身份认证与异常处理等控制操作;数据连接用于在通信双方之间传输文件或目录信息。FTP协议规定了两种连接建立与释放的顺序。控制连接要在数据连接建立之前建立,在数据连接释放之后释放。只有建立数据连接之后才能传输数据,并在数据传输过程中要保持控制连接不中断。控制连接与数据连接的建立与释放有规定的发起者。控制连接与数据连接建立的发起者只能是FTP客户机;控制连接释放的发起者只能是FTP客户机,数据连接释放的发起者可以是FTP客户机或服务器。如果在数据连接保持的情况下控制连接中断,则可以由FTP服务器要求释放数据连接。图2-1给出了FTP服务的工作过程。在FTP服务的工作过程中,FTP客户机向服务器请求建立控制连接,FTP客户机与服务器之间建立控制连接;FTP客户机请求登录到服务器,FTP服务器要求客户机提供用户名与密码;当FTP客户机成功登录到服务器后,FTP客户机通过控制连接向服务器发出命令,FTP服务器通过控制连接向FTP客户机程序设计8客户机返回响应信息;当FTP客户机向服务器发出目录命令后,FTP服务器会通过控制连接返回响应信息,并通过新建立的数据连接返回目录信息。图2-1FTP服务的工作过程如果用户想改变在FTP服务器的当前目录,FTP客户机通过控制连接向服务器发出改变目录命令,FTP服务器通过数据连接返回改变后的目录列表;如果用户想下载当前目录中的某个文件,FTP客户机通过控制连接向服务器发出下载命令,FTP服务器通过数据连接将文件传输到客户机。数据连接有两种常用的工作模式:ASCII模式和BINARY模式。其中,ASCII模式适合传输文本文件,BINARY模式适合传输二进制文件。数据连接在目录列表或文件下载后关闭,而控制连接在程序关闭时才会关闭。FTP客户机程序设计94FTP详细设计4.1FTP客户端设计思想以WindowsXP为平台,VC++6.0为开发工具,利用MFC框架,设计FTP客户端。该程序设计,完成FTP的各项功能,如提供FTP站点登陆,用户ID和密码,登陆FTP服务器站点,下载FTP目录信息。4.2界面布局如图3-1所示:图3-1FTP客户机程序设计104.3程序设计1,对话框类的声明:classCFTPClientDlg:publicCDialog{//Constructionpublic:CFTPClientDlg(CWnd*pParent=NULL);//standardconstructor//DialogData//{{AFX_DATA(CFTPClientDlg)enum{IDD=IDD_FTPCLIENT_DIALOG};CStringm_Address;CStringm_Account;CStringm_Password;CStringm_Login;CStringm_Directory;CStringm_PC;//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CFTPClientDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:FTP客户机程序设计11HICONm_hIcon;//Generatedmessagemapfunctions//{{AFX_MSG(CFTPClientDlg)virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnConnect();afx_msgvoidOnList();afx_msgvoidOnQuit();afx_msgvoidOnAddress();afx_msgvoidOnAccount();afx_msgvoidOnPassword();afx_msgvoidOnPc();afx_msgvoidOnButton2();afx_msgvoidOnButton3();//}}AFX_MSGDECLARE_MESSAGE_MAP()private:boolDataConnect();boolSendCommand();boolRecvRespond();charCommand[MAX_SIZE];charRespond[MAX_SIZE];intRespondCode;SOCKETSocketControl;SOCKETSocketData;};FTP客户机程序设计122,建立控制连接,身份认证,登陆服务器:voidCFTPClientDlg::OnConnect(){WSADATAWSAData;UpdateData(true);if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)//建立与Winsock库的绑定{AfxMessageBox(初始化Winsock失败!);return;}SocketControl=socket(AF_INET,SOCK_STREAM,0);//创建控制连接控制字if(SocketControl==INVALID_SOCKET){AfxMessageBox(创建控制Socket失败!);WSACleanup();return;}intIpAddress;IpAddress=inet_addr(m_Address);//判断IP地址或FTP服务器名if(IpAddress==INADDR_NONE){hostent*pHostent=gethostbyname(m_Address);if(pHostent)IpAddress=(*(in_addr*)pHostent-h_addr).s_addr;}sockaddr_inserveraddr;//填充服务器的套接字地址memset(&serveraddr,0,sizeof(serveraddr));serveraddr.sin_family=AF_INET;FTP客户机程序设计13serveraddr.sin_port=htons(21);serveraddr.sin_addr.s_addr=IpAddress;//m_Login=abc;m_Login+=Client:Connectto;m_Login+=m_Address;m_Login+=...\r\n;//向FTP服务器发送建立连接请求intnConnect;nConnect=connect(SocketControl,(sockaddr*)&serveraddr,sizeof(serveraddr));if(nConnect==SOCKET_ERROR){AfxMessageBox(控制连接建立失败!);closesocket(SocketControl);WSACleanup();return;}if(!RecvRespond())//从FTP服务器获得响应信息return;else{CStringm;m.Format(%d,RespondCode);//从响应信息中解析FTP响应吗//AfxMessageBox(m);if(RespondCode==220){//AfxMessageBox(220);FTP客户机程序设计14m_Login+=Server:;m_Login+=Respond;//m_Login+=Respond;}else{AfxMessageBox(控制连接响应错误!);closesocket(SocketControl);WSACleanup();return;}}memset(Command,0,MAX_SIZE);memcpy(Command,USER,strlen(USER));//合成USER命令memcpy(Command+strlen(USER),m_Account,strlen(m_Account));memcpy(Command+strlen(USER)+strlen(m_Account),\r\n,2);if(!SendCo
本文标题:FTP客户机程序设计
链接地址:https://www.777doc.com/doc-3524836 .html