《计算机网络》课程设计说明书-FTP文件传输的实现.doc

上传人:韩长文 文档编号:5017340 上传时间:2020-01-28 格式:DOC 页数:21 大小:256.50KB
返回 下载 相关 举报
《计算机网络》课程设计说明书-FTP文件传输的实现.doc_第1页
第1页 / 共21页
《计算机网络》课程设计说明书-FTP文件传输的实现.doc_第2页
第2页 / 共21页
《计算机网络》课程设计说明书-FTP文件传输的实现.doc_第3页
第3页 / 共21页
《计算机网络》课程设计说明书-FTP文件传输的实现.doc_第4页
第4页 / 共21页
《计算机网络》课程设计说明书-FTP文件传输的实现.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《《计算机网络》课程设计说明书-FTP文件传输的实现.doc》由会员分享,可在线阅读,更多相关《《计算机网络》课程设计说明书-FTP文件传输的实现.doc(21页珍藏版)》请在三一文库上搜索。

1、课程设计任务书题 目: FTP文件传输的实现 初始条件:理论:学完“操作系统”和“计算机网络”课程,掌握一种高级程序设计语言(C+、C#、Java、Delphi)及集成开发平台的使用。实践:计算机学院科学系实验中心提供计算机、软件平台和网络环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 模仿应用FTP协议。(2)主要功能: 1支持站点目录和文件结构浏览。2支持断线自动重新连接并自动恢复传输。3文件列表过滤,远程编辑,整个远端目录删除,目录上传下载。(3)应用所学计算机网络课程中的知识,利用网络实用程序实现其协议

2、。(4)编制好网络实用程序后,设计若干用例,上机测试并分析所设计的程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:设计题目;需求说明(要求、功能简述)或问题描述;设计说明(简要的分析与概要设计);详细的算法描述;源程序与执行结果(含测试方法和测试结果);使用说明;设计心得(设计的特点、不足、收获与体会);展望(该实用程序进一步改进扩展的设想)。时间安排:设计时间一周: 周1:查阅相关资料。周2:系统分析,设计。周3周4:编程并上机调试周5:撰写课程设计报告。设计验收安排:19周星期五8:00起到计算机学院科学系实验中心进行上机验收。设计报告书收取时间:19周的星期五下午

3、5:00之前。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日武汉理工大学计算机网络课程设计说明书FTP文件传输的实现1设计题目FTP文件传输的实现2需求说明(要求、功能简述)或问题描述2.1 FTP概念和传输原理FTP是Internet上使用非常广泛的一种通讯协议。它是由支持Internet文件传输的各种规则所组成的集合,这些规则使 Internet用户可以把文件从一个主机拷贝到另一个主机上,因而为用户提供了极大的方便和收益。FTP和其它Internet服务一样,也是采用客户机/服务器方式。使用方法很简单,启动FTP客户端程序先与远程主机建立连接,然后向远程主机发出传输命令,

4、远程主机在收到命令后就给予响应,并执行正确的命令。FTP有一个根本的限制,那就是,如果用户未被某一FTP主机授权,就不能访问该主机,实际上是用户不能远程登录(Remote Login)进入该主机。也就是说,如果用户在某个主机上没有注册获得授权,没有用户名和口令,就不能与该主机进行文件的传输。而Anonymous FTP则取消了这种限制。FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive (也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTPSer

5、ver。Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此

6、端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式:文本模式(ASCII)和二进制模式(BIN/IMAGE)。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为下载文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为上载文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP(非匿名)必须要有4要素:FTP主机地址,端口号,用户名,密码。2.2 需求说明完

7、成两台计算机之间的拷贝,实现文件的上传和下载;支持站点目录和文件结构浏览;文件列表过滤,远程编辑,整个远端目录删除;支持断线自动重新连接并自动恢复传输。3设计说明(简要的分析与概要设计)采用VB编程,通过建立一系列的窗体模块,程序模块,类模块编制一个小的应用软件。该软件的功能是当程序运行成功后,用户可以选择任意的FTP主机地址进行登陆。当选择是匿名的FTP主机地址时,选择anonymous复选框,这时只需要输入FTP主机地址就可以登陆,此时用户名为anonymous,密码为Emai1地址,以便更好地对用户访问进行跟综。如果不是匿名登陆,则取消选择anonymous复选框,这时要输入用户名和密码

8、,一个用户名对应了一个访问的权限。通过WINSOCK建立连接,将信息发送到远程的ftp服务器主机上,实现用户的登陆。当用户成功登陆后,远程FTP主机的文件就全部列在frmMain窗体左侧的TreeView控件中,当点机TreeView控件中的文件夹时,相应的文件夹中的文件就列在右侧的ListView控件中,并且显示文件的图标,大小和最近的访问日期。显示的方式可以通过点击工具栏中的图标来设置,文件可以以大图标的形式显示,也可以以小图标的形式显示。当用户选择了远程的某一个文件后,可以点击工具栏上的下载,删除,重命名图标来实现对远程文件的操作。但实际上大多数FTP主机为了安全采取了一些保护措施以保护

9、自己的文件。除非你有特殊的权限,否则不能对文件进行修改和删除。但是大多数匿名FTP主机都允许用户从其下载文件。用户也可以在本地选择文件上传到FTP服务器主机,大多数用户不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。因此要实现文件的上传,还需选择一个特殊的可以用户上传文件的FTP服务器主机地址。4详细的算法描述用户选择与FTP服务器

10、连接匿名FTP服务器?输入用户名和密码 输入FTP服务器地址点击连接,与FTP服务器连接连接成功?根据错误代码进行调试 开 始用户选择文件传输模式进行文件的上传,下载,修改,重命名等操作 操作成功?出 错 处 理 退 出? 断 开 连 接YNNYNYNY5 源程序与执行结果(含测试方法和测试结果)5.1原程序部分5.1.1 frmMain 窗体的部分代码Const NAME_COLUMN = 0Const TYPE_COLUMN = 1Const SIZE_COLUMN = 2Const DATE_COLUMN = 3Private Declare Function LockWindowUpd

11、ate Lib user32 (ByVal hwndLock As Long) As LongDim mbMoving As Boolean 定义是否鼠标按下Const sglSplitLimit = 500 定义最小的分割距离Private m_LastNode As NodePrivate WithEvents m_FtpConnection As CFtpConnectionPrivate m_strFile As StringPrivate m_lFileSize As LongPrivate Sub Check1_Click() If Check1.Value Then m_FtpC

12、onnection.PassiveMode = True Else m_FtpConnection.PassiveMode = False End IfEnd SubPrivate Sub CoolBar1_HeightChanged(ByVal NewHeight As Single) SizeControls picSplitter.LeftEnd SubPrivate Sub Form_Load() Me.Left = GetSetting(App.Title, Settings, MainLeft, 1000) app.title是当前程序的标题 Me.Top = GetSetting

13、(App.Title, Settings, MainTop, 1000) 表示读取注册表中关于App.Title所指的应用程序中Settings注册表目录下的MainTop变量的值,如果没有找到这个注册表变量则,默认为1000 Me.Width = GetSetting(App.Title, Settings, MainWidth, 6500) Me.Height = GetSetting(App.Title, Settings, MainHeight, 6500) Set m_FtpConnection = New CFtpConnection m_FtpConnection.Timeout

14、 = 180End SubPrivate Sub Form_Unload(Cancel As Integer) Dim i As Integer Set m_FtpConnection = Nothing close all sub forms For i = Forms.Count - 1 To 1 Step -1 卸载所有窗体 Unload Forms(i) Next SaveSetting App.Title, Settings, ViewMode, lvListView.ViewEnd SubPrivate Sub m_FtpConnection_StateChanged(State

15、As FTP_CONNECTION_STATES) Dim strStatus As String Select Case State Case FTP_CONNECTION_RESOLVING_HOST strStatus = Resolving host. Case FTP_CONNECTION_HOST_RESOLVED strStatus = Host resolved Case FTP_CONNECTION_CONNECTED strStatus = Connected Case FTP_CONNECTION_AUTHENTICATION strStatus = Authentica

16、tion. Case FTP_USER_LOGGED strStatus = You are logged in. Connection ready. Case FTP_ESTABLISHING_DATA_CONNECTION strStatus = Establishing data connection. Case FTP_DATA_CONNECTION_ESTABLISHED strStatus = Data connection established. Case FTP_RETRIEVING_DIRECTORY_INFO strStatus = Retrieving director

17、y info. Case FTP_DIRECTORY_INFO_COMPLETED strStatus = Directory listing completed. Case State = FTP_TRANSFER_STARTING strStatus = Transfer in progress. Case FTP_TRANSFER_COMLETED strStatus = Transfer completed. ProgressBar1.Value = 0.01 m_lFileSize = 0 End Select sbStatusBar.Panels(1).Text = strStat

18、usEnd SubPrivate Sub imgSplitter_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) With imgSplitter imgSplitter为image(图片)控件 picSplitter.Move .Left, .Top, .Width 2, .Height - 20 End With picSplitter.Visible = True mbMoving = True LockWindowUpdate Me.hwnd 指将句柄为Handle的窗体锁定,不能更新。E

19、nd SubPrivate Sub m_FtpConnection_UploadProgress(lBytes As Long) On Error Resume Next sbStatusBar.Panels(1).Text = Uploading & m_strFile & ( & lBytes & bytes) ProgressBar1.Value = lBytes / (m_lFileSize / 100)End SubPrivate Sub mnuConnect_Click() Call EstablishConnectionEnd SubPrivate Sub mnuDelete_C

20、lick() Dim intRetVal As Integer Dim strFileName As String On Error GoTo ERROR_HANDLER strFileName = tvTreeView.SelectedItem.Key & lvListView.SelectedItem.Text intRetVal = MsgBox(Do you really want to delete file & strFileName & ?, vbYesNoCancel, Delete file) If intRetVal = vbYes Then If m_FtpConnect

21、ion.DeleteFile(strFileName) Then ListFiles tvTreeView.SelectedItem 返回最近选中的项目 Else MsgBox Cant delete file. & vbCrLf & vbCrLf & _ Server response: & _ m_FtpConnection.GetLastServerResponse, , _ Cant delete file End If End If Exit SubERROR_HANDLER: If Err = 91 Then MsgBox Select file to rename, please

22、., vbInformation, Rename File Else MsgBox Error occured! & vbCrLf & # & Err.Number & : & Err.Description, _ vbInformation, Rename File End IfEnd SubPrivate Sub mnuDownload_Click() Call DownloadFileEnd SubPrivate Sub mnuFile_Click() With m_FtpConnection mnuDownload.Enabled = Not .Busy mnuUpload.Enabl

23、ed = Not .Busy End WithEnd SubPrivate Sub mnuHelp_Click() mnuHelpAbout.Enabled = Not m_FtpConnection.BusyEnd SubPrivate Sub mnuListViewMode_Click(Index As Integer) Select Case Index 当鼠标点击工具栏的view菜单时 Case 0 lvListView.View = lvwIcon 显示大图标的情况 Case 1 lvListView.View = lvwSmallIcon 显示小图标的情况 Case 2 lvLis

24、tView.View = lvwList 只显示列表 Case 3 lvListView.View = lvwReport 显示文件大小和日期 End Select tbToolBar.Buttons(15 + Index).Value = tbrPressedEnd SubPrivate Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button) ByRef是VB默认的参数传递方式,如果指定传递的是参数的值要使用关键字ByVal Dim strTemp As String On Error Resume Next Select

25、Case Button.Key Case Connect Call EstablishConnection Case UpLevel Set tvTreeView.SelectedItem = tvTreeView.SelectedItem.Parent strTemp = tvTreeView.SelectedItem.FullPath strTemp = Mid$(strTemp, InStr(1, strTemp, /) InStrRev返回某一字符串从另一字符串的右侧开始算起第一次出现的位置 If m_FtpConnection.SetCurrentDirectory(strTemp)

26、 Then ListFiles tvTreeView.SelectedItem End If Case Stop If Not m_FtpConnection.CloseConnection Then If m_FtpConnection.FtpGetLastError = ERROR_FTP_USER_TRANSFER_IN_PROGRESS Then Dim intRetVal As Integer intRetVal = MsgBox(Data transfer in progress. Do you want to cancel the data transfer?, vbYesNo

27、+ vbQuestion) If intRetVal = vbYes Then m_FtpConnection.CancelTransfer End If End If End If Case Refresh Call RefreshDirectory Case Download mnuDownload_Click Case Upload mnuUpload_Click Case CreateDirectory mnuCreateDir_Click Case Delete mnuDelete_Click Case Rename mnuRename_Click Case View Large I

28、cons lvListView.View = lvwIcon Case View Small Icons lvListView.View = lvwSmallIcon Case View List lvListView.View = lvwList Case View Details lvListView.View = lvwReport End SelectEnd SubPrivate Sub mnuFileClose_Click() unload the form Unload MeEnd SubPublic Function FormatFileSize(lFileSize As Lon

29、g) As String On Error GoTo ERROR_HANDLER If lFileSize = 1024 Then FormatFileSize = Format$(CStr(lFileSize / 1024), # # # KB) CStr 转换为String类型 Else FormatFileSize = CStr(lFileSize) & & bytes End If Exit FunctionERROR_HANDLER: Debug.Print Err.Number & & Err.DescriptionEnd FunctionPrivate Sub tvTreeVie

30、w_DragDrop(Source As Control, x As Single, y As Single) source只正在被拖动的控件,x,y指鼠标指针在目标对象中的坐标值 If Source = imgSplitter Then SizeControls x End IfEnd SubPrivate Sub AddFileToListView(oFtpFile As CFtpFile) Dim intIcon As Integer Dim strFileName As String strFileName = oFtpFile.FileName intIcon = GetImageN

31、umber(strFileName) Set lvItem = lvListView.ListItems.Add(, strFileName, strFileName, intIcon, intIcon) lvItem.SubItems(1) = oFtpFile.FileSize lvItem.SubItems(2) = oFtpFile.LastWriteTimeEnd SubPrivate Sub RefreshDirectory() With tvTreeView.SelectedItem 从treeview中移除所有subfolders If .Children 0 Then For

32、 i = 1 To .Children tvTreeView.Nodes.Remove (.Child.Index) Next i End If lvListView.ListItems.Clear ListFiles tvTreeView.SelectedItem End With End SubPrivate Sub EstablishConnection()Dim tvNode As NodeDim f As New frmConnectf.Show vbModal 显示连接窗体的内容If f.Action = comdOK Then 当按下OK时,清空treeview和listview

33、的内容 tvTreeView.Nodes.Clear lvListView.ListItems.Clear With m_FtpConnection .FtpServer = f.URL .UserName = f.UserName .Password = f.Password .PassiveMode = CBool(Check1.Value) call Connect method If .Connect Then Label1 = f.URL add root node to the treeview Set tvNode = tvTreeView.Nodes.Add(, , , .Cu

34、rrentDirectory, 1) tvNode.Key = .CurrentDirectory Set tvTreeView.SelectedItem = tvNode ListFiles tvNode, True End If .Connect End With m_FtpConnectionEnd If f.Action = comdOKEnd Sub5.2.2 frmconnect窗体的部分代码Public Property Get UserName() As String UserName = mvarUserNameEnd PropertyPublic Property Get

35、Password() As String Password = mvarPasswordEnd PropertyPublic Property Get URL() As String URL = mvarURLEnd PropertyPrivate Sub chkAnonym_Click()If chkAnonym.Value Then txtUserName = anonymous txtPassword.PasswordChar = txtPassword = Frame3.Caption = Your E-Mail AddressElse txtUserName = txtPasswo

36、rd.PasswordChar = * txtPassword = Frame3.Caption = PasswordEnd IfEnd SubPrivate Sub cmdCancel_Click()mvarAction = comdCancelUnload MeEnd SubPrivate Sub cmdOK_Click()If Len(txtURL) = 0 Then MsgBox Enter a URL or click on Cancel button., vbOKOnly + vbInformation, Invalid URL Exit SubElse mvarURL = LCa

37、se(txtURL.Text)End IfIf Len(txtUserName.Text) = 0 Then mvarUserName = vbNullStringElse mvarUserName = txtUserName.TextEnd IfIf Len(txtPassword.Text) = 0 Then mvarPassword = vbNullStringElse mvarPassword = txtPassword.TextEnd IfmvarAction = comdOKUnload MeEnd SubPublic Property Let Action(ByVal vData

38、 As Command) mvarAction = vDataEnd PropertyPublic Property Get Action() As Commandused when retrieving value of a property, on the right side of an assignment.Syntax: Debug.Print X.Action Action = mvarActionEnd Property5.2 运行结果5.2.1 开始界面(见图一) (图一)5.2.2 用户点击file-connect to 或工具栏上的连接后的界面(见图二)(匿名方式)(非匿名

39、)(图二)5.2.3用户与ftp服务器主机地址ftp:/vip:vip88202.118.167.160 连接成功的界面(见图三) (图三)分析: 220 Serv-U FTP Server v6.1 for WinSock ready . 表示服务就绪 ; USER vip表示用户名字为vip; 331 User name okay, need password.表示用户名正确,需要口令; PASS vip88表示用户的密码为vip88; 230 User logged in, proceed. 表示用户已经注册完毕; 257 / is current directory.表示路径已建立;

40、PORT 192,168,18,128,4,76 表示当前客户端的IP为192.168.18.128 ,端口号为4*256+76=1100; 200 PORT Command successful. 表示命令执行正常结束; 150 Opening ASCII mode data connection for /bin/ls 表示文件状态正确,正在打开数据连接; 226 Transfer complete表示正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止); 在左侧列的是远程服务器提供给用户共享的文件夹,右侧列的是文件夹所包含的文件,并列出文件的图标,大小和最近更改日期。 5.2.4用户从ftp主机上下载文件,保存到本地的subject文件夹中(见图四)(图四)5.2.5文件下载

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1