您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > FTP客户端课程设计报告书(DOC33页)
《计算机网络》课程设计课题名称FTP客户机搭建学院信息工程学院专业网络工程班级学号姓名第1页目录和索引一、需求分析------------------------------------------21、功能需求2、开发环境与工具3、所需要知识二、知识理解-----------------------------------------21、FTP实现的基本原理(1)概要(2)上传和下载(3)用户FTP和匿名FTP(4)ASCII和Binary(5)Port和Passive三、完成进度-----------------------------------------31、已完成部分2、未完成部分3、还需改善的部分四、FTP服务工作过程---------------------------------4五、详细设计-----------------------------------------51、CFtpDlg类的一些函数定义………………………………………………52、CFtpOperate的一些函数定义……………………………………………17六、测试结果----------------------------------------29七、用户手册----------------------------------------32八、实验总结----------------------------------------32第2页FTP客户端程序一、需求分析1、功能需求(1)实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。(2)提供登录界面,上传下载界面、帮助界面、关于界面。(3)通过输入服务器地址、用户名和密码,可以实现远程FTP主机的登录。(4)提供本地文件和文件夹的上传功能,可对FTP主机文件进行下载和删除文件。(5)提供对本地目录的读取与返回,能正确列出文件和文件夹,在没有登录服务器前可以作为一个简单的文件查询工具对本地文件进行查询。(6)帮助页面可以对用户提供使用说明。(7)关于界面包含设计者的信息。(9)要求开发出的FTP客户端符合标准FTP协议规范,支持ASCII传输模式和二进制数据传输模式(10)FTP的两种工作模式的选择Port模式(主动)和Passive模式(被动)2、开发环境与工具(1)使用的IDE:使用VC++6.0作为开发环境IDE(2)使用的语言:C++(3)使用的开发包:使用MFC和WinInet(4)开发平台:Windows73、所需要知识(1)计算机网络的基本知识(2)了解FTP基本实现原理(2)使用VC++6.0IDE进行MFC程序开发的基本知识(3)熟悉WinInet中属于FTP部分的操作(4)熟悉文件或文件夹操作(5)熟悉控件的操作,如在ListCtrol添加图片(浏览文件或文夹的图标)二、知识理解1、FTP实现的基本原理(1)概要Internet是一个非常复杂的计算机环境,Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。(2)上传和下载下载文件就是从远程主机拷贝文件至自己的计算机上;第3页上传文件就是将文件从自己的计算机中拷贝至远程主机上(3)用户FTP和匿名FTP用户FTP:种方式为已在FTP服务器上建立了特定帐号的用户使用,需要合法的用户名和密码才能登录到远程计算机传输文件。匿名FTP:用户作为“anonymous”登录到FTP服务器,不需要有自己的用户名和密码。(4)ASCII和BinaryASCII:文本传输器使用ASCII字符,并由回车键和换行符分开Binary:二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。(5)Port和PassivePort模式(主动):FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTPserver必须和客户端建立一个新的连接用来传送数据。Passive模式(被动):Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。三、完成进度1、已完成部分(1)实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。(2)提供登录界面,上传下载界面、帮助界面、关于界面(3)通过输入服务器地址、用户名和密码,可以实现远程FTP主机的登录。(4)提供本地文件上传功能,可对FTP主机文件进行下载和删除文件。(5)提供对本地目录的读取与返回,能正确列出文件和文件夹,在没有登录服务器前可以作为一个简单的文件查询工具对本地文件进行查询。(6)帮助页面可以对用户提供使用说明。(7)关于界面包含设计者的信息(帮助界面和关于界面整合在一起)。(9)支持ASCII传输模式和二进制数据传输模式,外加自动选择的模式(10)FTP的两种工作模式的选择Port模式(主动)和Passive模式(被动)(11)提供用户操作的状态信息输出2、未完成部分只提供了本地文件的上传功能,暂时不能提供文件夹的上传功能,由于当初没有使用多线程对服务器端进行操作,若上传或下载的文件过大,会导致界面陷入长时间的不响应中。由于时间问题,就不再进行多线程的扩充,也就不提供文件夹的上传功能。3、还需改善的部分(1)使用多线程进行操作第4页(2)提供文件夹上传和文件夹下载功能(3)改进界面,提供更方便的操作(4)增加上传和下载的队列(5)同时可连接多个FTP服务器(6)改善提示信息(7)账户。密码等用户资料在本地加密后保存(8)增加更多的功能,如下载完成后关机等(9)等………四、FTP服务工作程五、详细设计(1)CFtpDlg类的一些函数定义BOOLCFtpDlg::OnInitDialog(){CDialog::OnInitDialog();//AddAbout...menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL)第5页{CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}SetIcon(m_hIcon,TRUE);SetIcon(m_hIcon,FALSE);m_ctrBinary.SetCheck(1);m_ctrActive.SetCheck(1);m_editPort.SetWindowText(21);bBinary1=1;//使用二进制bPassive1=0;//使用主动myPort=21;m_imgList.Create(20,20,ILC_COLOR32,0,0);//创建图像列表m_imgList.SetBkColor(RGB(255,255,255));//文件夹图标hIconFold=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_FOLDER));//文件图标hIconFile=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_FILE));m_imgList.Add(hIconFold);m_imgList.Add(hIconFile);m_ctrlLocalFile.SetImageList(&m_imgList,LVSIL_SMALL);//关联m_ctrlServerFile.SetImageList(&m_imgList,LVSIL_SMALL);//关联m_editServer.SetWindowText(ftp://);m_editName.SetWindowText();m_editPassword.SetWindowText();m_btnCon.EnableWindow(TRUE);m_btnClo.EnableWindow(FALSE);m_ctrlLocalFile.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_ctrlServerFile.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_ctrlLocalFile.InsertColumn(0,文件名,LVCFMT_LEFT,140,0);//设置列m_ctrlLocalFile.InsertColumn(1,文件类型,LVCFMT_LEFT,100,1);m_ctrlLocalFile.InsertColumn(2,修改日期,LVCFMT_LEFT,100,2);m_ctrlServerFile.InsertColumn(0,文件名,LVCFMT_LEFT,140,0);//设置列m_ctrlServerFile.InsertColumn(1,文件类型,LVCFMT_LEFT,100,1);m_ctrlServerFile.InsertColumn(2,修改日期,LVCFMT_LEFT,100,2);//添加硬盘盘符size_tszAllDriveStrings=::GetLogicalDriveStrings(0,NULL);TCHAR*pDriveStrings=newTCHAR[szAllDriveStrings+sizeof(_T())];GetLogicalDriveStrings(szAllDriveStrings,pDriveStrings);size_tszDriveString=::strlen(pDriveStrings);第6页while(szDriveString0){m_ctrlLocal.AddString(pDriveStrings);pDriveStrings+=szDriveString+1;szDriveString=::strlen(pDriveStrings);}intindex=m_ctrlLocal.FindString(0,c:\\);m_ctrlLocal.SetCurSel(index);m_strLocPath=c:\\;/
本文标题:FTP客户端课程设计报告书(DOC33页)
链接地址:https://www.777doc.com/doc-1525060 .html