ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:360.72KB ,
资源ID:19655682      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19655682.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络课程设计报告Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络课程设计报告Word下载.docx

1、FTP协议在TCP/IP协议栈中的位置如表1: 表1 TCP/IP协议栈中关于FTP的模块HTTP FTP TELN SMTP DNS TFTP NMP应用层TCP UDP传输层IP互联网络层X25 ISDN LAN WLAN FDDI ATM网络接口层当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采用“客户端/服务器”方式,用户要在自己的本地计算机上安装FTP客户端程序。从根本上说,FTP协议就是在网络中各种不同的

2、计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上

3、公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。2.2 FT

4、P工作模式FTP 采用C/S(客户端/服务器)模式进行通信,但与其他的C/S 模式网络通信协议又有一个很大的区别。通常在进行HTTP 通信或是TELNET 通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET 的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP 通信除了有一个默认端口21 之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提

5、供给服务器一个IP 地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP 地址和一个非标准端口。下表是几个著名的TCP 端口号:表2 TCP 端口号TCP 端口号关键字描述21FTP文件传输协议控制FTP 中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8 位,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制连接是建立在USER-PIT 和SERVER-PI 之间用于交换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP 和用户DTP之间也可以发生在两个服务器DTP 之间

6、,FTP 可以传输非连续的文件,这些文件的一部分称为页。服务器DTP 代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI 的指令传输数据。当然,DTP 也可以转入“被动”状态。服务器FTP 进程,它是和用户FTP 进程一起工作的,它由PI 和DTP 组成。在开始阶段,标准FTP 命令由用户PI 产生并通过控制连接传送到服务器进程。服务器PI 向用户PI 返回标准应答。FTP 命令指定数据连接参数和文件系统操作。用户DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP 命令的机器上,但用户或用

7、户FTP 进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。2.3 FTP 传输模式FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp 协议对话,并且能访问Internet, 你可以用ftp 命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。2.3.1 ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常

8、会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理。2.3.2 二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你

9、在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。 3 FTP客户端的设计3.1总体设计3.1.1 设计目的 FTP 早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP 服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP 客户端。虽然平时使用windows 自带的IE 浏览器即可实现对FTP 服务器的访问,但是IE 只是个很粗糙的FTP 客户端。IE 浏览器在6.0 以下的版本不支持PASV 方式访问服务器, 而且IE 浏览器在登录FTP 服务器的时候,无法查

10、看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。现在大多数的FTP 客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp 、Ftp Voyager 等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP 客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP 客户端的基本功能,可以作为下载、上传文件的工具来使用。3.1.2 设计工具 程序设计中用到的主要工具就是C+,C+是一种面向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和

11、编译型语言(如C语言)的特性。 C+中各种利大于弊的功能和许多很少用到的功能,用C+开发的程序可以在网络上传输,并运行于任何客户机上。使用C+语言可以方便的设计出网络应用类的程序,而且C+的移植性很好,在、其应用程序在各种机器上都能无差别的执行。为了使FTP客户端能适应大多数平台下的使用,选择使用C+语言来实现。3.2ftp客户端详细设计3.2.1 客户端连接模块运行客户端后,首先是连接服务器,需要输入服务器IP 地址,用户名和密码,然后点击连接服务器,观察是否连接成功,若成功则显示服务器端的文件的列表。若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务器IP 地址或

12、用户名或密码,直到连接上服务器。下图为客户端连接流程图: 图3-1 客户端连接流程图服务器模块的关键代码为:void CMyFtpDlg:OnConnect() UpdateData(TRUE); /新建对话 m_pInetSession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS); try /新建连接对象 m_pFtpConnection=m_pInetSession-GetFtpConnection(m_strServer,m_strUserName, m_strPassword); catch(CI

13、nternetException *pEx) /获取错误 TCHAR szError1024; if(pEx-GetErrorMessage(szError,1024) AfxMessageBox(szError); else AfxMessageBox(There was an exception); pEx-Delete(); m_pFtpConnection=NULL; return; m_pRemoteFinder = new CFtpFileFind(m_pFtpConnection); /获得服务器根目录的所有文件并在列表框中显示 BrowseDir(,&m_ctrlRemoteF

14、iles,m_pRemoteFinder,&m_arrRemoteFiles);3.2.2 上传模块 用户在连接上服务器后,可以在本地列表中选择需要上传的文件,并指定上传位置,将本机上的文件上传至FTP 服务器。不能选择文件夹,只能选择文件。若上传失败,则抛出异常;如果成功上传,则提示上传成功。并通过断开与远程服务器的连接。下图为上传子模块流程图: 图3-2上传模块流程图上传模块的主要代码为:UpFile(FILEITEM fileItem) if(fileItem.bDir = TRUE) AfxMessageBox(本程序暂时不支持上传整个文件夹,请选择文件上载 elsetest /格式化

15、文件名 CString strLocalFile,strRemoteFile; strRemoteFile.Format(%s%s,m_pRemoteFinder-GetRoot(),fileItem.strFileName); strLocalFile.Format(,m_LocalFinder.GetRoot(),fileItem.strFileName); /上传 if(m_pFtpConnection-GetFile(strLocalFile,strRemoteFile) CString strMsg; strMsg.Format(上载文件%s成功!,fileItem.strFileN

16、ame); AfxMessageBox(strMsg); 3.2.3 下载模块当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存储位置,设置上传模式为被动模式 ;将服务器上的文件下载至本机,如果成功下载,则提示下载成功,若失败则抛出异常,此过程可连续进行直到想退出。下图为下载子模块流程图: 图3-2 下载模块流程图下载模块的主要代码:DownFile(FILEITEM fileItem)本程序暂时不支持下载整个文件夹,请选择文件下载 /下载GetFile(strRemoteFile,strLocalFile)下载文件%s成功!4 ftp客户端测试分析4.1 运行方法在程

17、序中输入服务器的IP、用户名、和密码,点击“连接服务器”按钮即可等待连接服务器。然后可选择本地文件上传到服务器或选择服务器文件下载到本地。4.2运行结果FTP服务器连接前和连接后,此过程要正确的输入服务器IP 地址,用户名和密码,本地文件栏的文件为本机D盘的内容,连接成功后在远程文件栏会出现服务器上的文件,则也标志着连接成功: 图4-1 ftp服务器连接前 图4-2 ftp服务器连接后如果未选择文件就点击“上传”按钮就会弹出对话框,“请选择要上传的文件”,如果想选择文件可先选中文件夹,后点击“下一目录”来选择: 图4 -3 选择文件夹选择文件后,点击“上传”或“下载”即可实现上传和下载,上传或

18、下载的文件都可在远程文件或本地文件里查找到,如果上传或下载成功会有提示: 图4-4 上传和下载图4-5 使用说明 5 设计总结 在指导老师的监督下,经过图书馆和网上查找各种资料以及学到的知识,通过紧张的设计与开发,本次课程设计简易FTP客户端的设计与实现终于完成了,虽然该系统功能上还有很多的不足,但通过钻研,设计模块,解决开发过程中遇到的各种困难,最后实现了该系统的基本功能。其次操作页面简洁易懂;此系统实现了远程登录服务器、浏览本地与服务器目录文件等功能需求,从而实现了一个简易的FTP客户端软件。通过我们自己实际设计一个FTP客户端软件,使我们了解了FTP的发展历史以及工作原理,对FTP协议在

19、网络中的结构和本身协议在传输的作用有了更深的认识。通过系统的实现,我们又了解了软件实现的理论知识,理解了实现的概念,了解了实现的方法以及过程,虽然只是有限的尝试和使用,但都会对以后做类似的项目起到了积极的指导作用。同样通过这次的课程设计,对FTP这种网络程序的设计,我们都发现了自己在学习上的不足,认识到了知识的重要性,体会到只有不断的充实自己,不断的挑战自己,才能获得更好的收获。参考文献1 谢希仁.计算机网络(第五版)M.北京:电子工业出版社,2008:23223.2 程国君.计算机网络实验教程 M北京:清华大学出版社,2008:79104.3 黄嘉辉.Visual Basic.NET网络程序

20、设计 M北京:清华大学出版社,2003:172684 吴光明.使用开发FTP客户端应用程序 J.河北理工学院学报,2005:59645 6 附录核心代码: / MyFtpDlg.h : header file/#if !defined(AFX_MYFTPDLG_H_D3975D47_86C5_11D6_8F32_00E04CE76240_INCLUDED_)#define AFX_MYFTPDLG_H_D3975D47_86C5_11D6_8F32_00E04CE76240_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER / CM

21、yFtpDlg dialog/保存文件信息typedef struct FileItem int nItem; /在列表框中的索引 BOOL bDir; /是文件夹? CString strFileName; /文件名FILEITEM;class CMyFtpDlg : public CDialog/ Constructionpublic: CMyFtpDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data /AFX_DATA(CMyFtpDlg) enum IDD = IDD_MYFTP_DIALOG ; CListCtr

22、l m_ctrlRemoteFiles; /ClistCtrl构造一个CListCtrl对象。 /Create创建列表控件并将其附加给CListCtrl对象 CListCtrl m_ctrlLocalFiles; CString m_strPassword; CString m_strServer; CString m_strUserName; /AFX_DATA protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected:

23、 HICON m_hIcon; CInternetSession* m_pInetSession; /会话对象 CFtpConnection* m_pFtpConnection; /连接对象 CFtpFileFind* m_pRemoteFinder; /远程查找文件对象 CFileFind m_LocalFinder; /本地查找文件对象 CString m_strLocalParentRoot; /本地文件目录的上上一层目录 CString m_strRemoteParentRoot; /远程文件目录的上上一层目录 /*CArray即为其中的一个,用来实现动态数组的功能。CArray是从C

24、Object派生,有两个模板参数, *第一个参数就是CArray类数组元素的变量类型,后一个是函数调用时的参数类型。 */ CArraym_arrLocalFiles; /保存本地文件信息m_arrRemoteFiles; /保存远程文件信息 /遍历文件下的所有子文件 void BrowseDir(CString strDir,CListCtrl* pLstCtrl,CFileFind* pFinder,CArray* pFilesArr); void DownFile(FILEITEM fileItem); void UpFile(FILEITEM fileItem); void AddItem(CListCtrl* pLstCtrl,int nIndex,BOOL bDir,CString strText); void SetListCtrlStyle(CListCtrl* pLstCtrl); void AddHeaders(CListCtrl* pLstCtrl); / Generated message map functions /AFX_MSG(CMyFtpDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_m

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1