计算机网络课程设计-利用VB实现FTP协议的基本功能.doc
《计算机网络课程设计-利用VB实现FTP协议的基本功能.doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计-利用VB实现FTP协议的基本功能.doc(21页珍藏版)》请在三一文库上搜索。
1、课程设计任务书专业:计算机科学与技术 学号:学生姓名(签名): 设计题目:VB实现FTP协议的基本功能一、设计实验条件 综合搂实验室二、设计任务及要求1. FTP协议可以使本地或远程的客户和服务器之间通过TCP传输协议进行文件传输;2. 要求利用VB实现FTP协议的基本功能。3. 用Winsock控件来实现与FTP服务器端建立连接,该程序实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示服务器当前目录dir:列出服务器当前目录cd:改变远方当前目录quit:退出返回4. 用Serv-U搭建FTP服务器,设置客户端访问的用户名、密码、可以访问的服务器目录,对服务器可访
2、问目录文件的操作权限(可读、可写)。三、设计报告的内容1. 设计题目与设计任务(设计任务书)设计题目:实现FTP协议的基本功能,实现客户机和服务器之间文件的上传、下载、修改、重名名等设计任务:使用Winsock控件,通过TCP协议与FTP服务器端建立连接。使用的环境是Microsoft Visual Basic 6.0 中文版,FTP服务器搭建是基于Serv-U软件建立的服务器。2. 前言(绪论)(设计的目的、意义等)文件传输协议FTP(File Transfer Protocol)是在TCP/IP网络中传输文件的一种格式规范,其目标是保证主机之间可靠和高效的传输程序或数据,向用户屏蔽不同主机
3、中各种文件存储系统的细节。其规定在用户和服务器之间建立两个并行的TCP连接:控制连接和数据连接。前者是建立在用户协议解释器和服务器协议解释器之间用于交换命令与响应的通信链路;后者是传输数据的全双工连接。数据连接要先将文件拆分成分组再进行传送,这样做的目的是为了更加好的适应网络中的带宽限制,以及减少传送期间节点的延时,以达到高速传送。文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。本设计是用VB语言简单实现文件传输协议,主要利用Winsock控件,当中实现了上传、下载、获取服务
4、器目录等基本文件传输功能。 客户端服务器数据传输控制字传输3. 设计主体(各部分设计内容、分析、结论等)(1)建立基本的工程和窗口 实现“系统信息”功能。通过查询注册表来获取一些相关的信息,导入要用到的访问注册版的API, 通过填写服务器地址,用户名和用户密码来实现与服务器的连接。可以匿名访问也可以填写用户名访问。 下图:设计主窗口的菜单和其他一些必需的控件。如:工具栏、左边的TreeView控件、添加右边的ListView控件等。 服务器配置:设置用户有关信息 (2)基本类模块:用于处理相关链接、上传、下载等操作 1实现FTP文件类,即把有关的信息封装成一个类,实现面向对象的思想,便于管理P
5、rivate mvarFileName As String Private mvarLastWriteTime As Date Private mvarFileSize As Long Private mvarIsDirectory As BooleanPrivate mvarFilePath As StringPublic Property Let IsDirectory(ByVal vData As Boolean) mvarIsDirectory = vDataEnd PropertyPublic Property Get IsDirectory() As Boolean IsDirec
6、tory = mvarIsDirectoryEnd PropertyPublic Property Let FileSize(ByVal vData As Long) mvarFileSize = vDataEnd PropertyPublic Property Get FileSize() As Long FileSize = mvarFileSizeEnd PropertyPublic Property Let LastWriteTime(ByVal vData As Date) mvarLastWriteTime = vDataEnd PropertyPublic Property Ge
7、t LastWriteTime() As Date LastWriteTime = mvarLastWriteTimeEnd PropertyPublic Property Let FileName(ByVal vData As String) mvarFileName = vDataEnd PropertyPublic Property Get FileName() As String FileName = mvarFileNameEnd PropertyPublic Property Let FilePath(ByVal vData As String) mvarFilePath = vD
8、ataEnd PropertyPublic Property Get FilePath() As String FilePath = mvarFilePathEnd Property 2实现FTP连接类。定义两个Winsock控件变量,一个用户控制连接,一个用于数据连接*Winsock Control for control connectionPrivate WithEvents wscControl As MSWinsockLib.WinsockWinsock Control for data connectionPrivate WithEvents wscData As MSWinsoc
9、kLib.Winsock*为wscControl添加DataArrival事件响应方法。通过调用GetData方法获取到达的数据,并加在原来的数据的后面,如果相应码是426,表示与服务器的连接关闭,重置类变量,并关闭wscControl。Private Sub wscControl_DataArrival(ByVal bytesTotal As Long) Dim strData As String wscControl.GetData strData m_strWinsockBuffer = m_strWinsockBuffer & strData m_strLastServerRespon
10、se = strData m_objTimeOut.Reset If GetResponseCode(strData) = 426 Then If m_bTransferInProgress Or m_bUploadFile Then wscData.Close Close m_intLocalFileID m_strDataBuffer = m_lDownloadedBytes = 0 m_lUploadedBytes = 0 m_bTransferInProgress = False m_bUploadFile = False m_bFileIsOpened = False End If
11、wscControl.Close m_bBusy = False End If Debug.Print Left(strData, Len(strData) - 2)End Sub处理与FTP服务器的连接。用的FTP服务器需要用户名和密码进行帐户认证,需要先处理USER命令和PASS命令,获取用户名,附加到USER命令中发送到服务器。并处理服务器的响应,最后返回FTP相应码,标识登录是否成功。Private Function ProcessUSERCommand() As FTP_RESPONSE_CODES Dim strData As String On Error GoTo Proces
12、sUSERCommand_Err_Handler RaiseEvent StateChanged(FTP_CONNECTION_AUTHENTICATION) m_strUserName = IIf(Len(m_strUserName) 0, m_strUserName, anonymous) If Len(m_strPassword) = 0 Then If m_strUserName = anonymous Then m_strPassword = Else raise error Exit Function End If End If wscControl.SendData USER
13、& m_strUserName & vbCrLf Debug.Print USER & m_strUserName m_objTimeOut.StartTimer Do DoEvents If m_objTimeOut.Timeout Then m_LastError = ERROR_FTP_USER_TIMEOUT Exit Do End If If Len(m_strWinsockBuffer) RESPONSE_CODE_LENGHT Then strData = m_strWinsockBuffer m_strWinsockBuffer = Exit Do End If Loop m_
14、objTimeOut.StopTimer Select Case GetResponseCode(strData) Case FTP_RESPONSE_USER_LOGGED_IN ProcessUSERCommand = FTP_RESPONSE_USER_LOGGED_IN Case FTP_RESPONSE_USER_NAME_OK_NEED_PASSWORD ProcessUSERCommand = FTP_RESPONSE_USER_NAME_OK_NEED_PASSWORD Case Else ProcessFtpResponse GetResponseCode(strData)
15、End Select Exit_Label: Exit FunctionProcessUSERCommand_Err_Handler: If Not ProcessWinsockError(Err.Number, Err.Description) Then Err.Raise vbObjectError + 1000 + Err.Number, CFtpConnection.ProcessUSERCommand, Err.Description End If GoTo Exit_Label End FunctionPrivate Function ProcessPASSCommand() As
16、 FTP_RESPONSE_CODES Dim strResponse As String Dim strData As String On Error GoTo ProcessPASSCommand_Err_Handler wscControl.SendData PASS & m_strPassword & vbCrLf Debug.Print PASS & m_strPassword m_objTimeOut.StartTimer Do DoEvents If m_objTimeOut.Timeout Then m_LastError = ERROR_FTP_USER_TIMEOUT Ex
17、it Do End If If Len(m_strWinsockBuffer) RESPONSE_CODE_LENGHT Then strData = m_strWinsockBuffer Exit Do End If Loop m_objTimeOut.StopTimer If GetResponseCode(strData) = FTP_RESPONSE_USER_LOGGED_IN Then Do DoEvents If InStr(1, m_strWinsockBuffer, 230 ) 0 Then ProcessPASSCommand = FTP_RESPONSE_USER_LOG
18、GED_IN m_strWinsockBuffer = Exit Function End If Loop Else ProcessFtpResponse GetResponseCode(strData) End If ProcessPASSCommand = GetResponseCode(strData) Exit_Label: Exit FunctionProcessPASSCommand_Err_Handler: If Not ProcessWinsockError(Err.Number, Err.Description) Then Err.Raise vbObjectError +
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 利用 VB 实现 FTP 协议 基本功能
链接地址:https://www.31doc.com/p-5027288.html