东南大学计网实验_第1页
东南大学计网实验_第2页
东南大学计网实验_第3页
东南大学计网实验_第4页
东南大学计网实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上东南大学自动化学院实 验 报 告课程名称: 信息通信网络概论 第 2 次实验实验名称: FTP客户端通信程序设计 院 (系): 自动化 专 业: 自动化 姓 名: 徐丽娜 学 号: 实 验 室: 实验组别: 同组人员: 实验时间: 2013年 12 月 9日评定成绩: 审阅教师: 目 录一实验目的和要求 2二实验原理 2三实验方案与实验步骤 2四实验设备与器材配置 3五实验记录 3六实验总结:7七思考题或讨论题 7一、 实验目的和要求:1.使用MFC WinInet函数编写一个简单的FTP客户端程序,实现FTP客户端软件的基本功能检索FTP文件服务器,上传和下载。2.

2、理解掌握CInternetSession、 CFtpFileFind类及GetFtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函数的使用,并熟悉FTP的编程的过程。二、 实验原理:在使用 MFC 编程时,要连接到 FTP 服务器是一件非常简单的事情,只需要两个简单的步骤,首 先必须建立一个 CinternetSession 对象,用类 CinternetSession 创建并初始化一个或几个同时存在的 Internet 会话(Session),并描述与代理服务器的连接(如果有必要的话),如果在程序运行期间需要 保持与

3、 Internet 的廉洁,可以创建一个 CinternetSession 对象作为类 CwinApp 的成员。MFC 中的类 CftpConnection 管理我们与 Internet 服务器的连接,并直接操作服务器上的目录和文 件,FTP 时 MFC 的 WinInet 支持的三个 Internet 功能之一,我们需要先创建一个 CinternetSession 实例 和一个 CftpConnection 对象就可以实现和一个 FTP 服务器通信,我们不需要直接创建 CftpConnection 对象,而是通过调用 CinternetSession:GetFtpConnection 来完成

4、这项工作。他创建 CFtpConnection 对 象并返回一个指向该对象的指针。 在 FTP 连接的程序中,主要适用下列 7 个函数: CInternetSession 对象 在创建 CInternetSession 对象时调用这个成员函数。CInternetSession 是应用程序第一个要 调用的 Internet 函数,它将初始化内部数据结构,以备将来在应用程序中调用。 GetFtpConnection()函数。 调 用 这 个 函 数 建 立 FTP 连 接 , 并 获 得 一 个 指 向 CFtpConnection 对 象 的 指 针 , GetFtpConnection 连接到

5、一个 FTP 服务器,创建并返回指向 CFtpConnection 对象的指针,它不在服务 器上进行任何操作。如果打算读写文件,必须进行分步操作。 GetFile()函数。 调用这个成员函数,可以从 FTP 服务器区的文件,并且把文件储存到本地机器上。 PutFile()函数。 调用这个成员函数把文件储存到 FTP 服务器上。它能够处理有关把文件存放到服务器上的 所有工作。 FTP 文件查找函数。 调用这个成员函数构造一个 CftpFileFind 对象。 FindFile()函数。 调用这个函数查找 FTP 文件,调用它检索到第一个 FTP 文件后,可以调用 FindNextFile() 检

6、索后面的 FTP 文件。 FindNextFile()函数。 调用这个函数继续查找文件,在调用任何属性以前,必须已经至少调用过一次此函数。 以上函数的具体使用方法可以参见 MSDN。三、实验方案与实验步骤:主要步骤:1.创建一个internet会话。 CInternetSession* pSession; pSession=new CInternetSession(AfxGetAppName(),1, PRE_CONFIG_INTERNET_ACCESS);2.建立与FTP服务器的连接。 CFtpConnection* pConnection; pConnection=pSession->

7、;GetFtpConnection(m_strFtpSite, m_strName,m_strPwd);3、如果连接成功,获得当前登陆的缺省目录下所有的文件和目录名称。 CFtpFileFind* pFileFind; pFileFind=new CFtpFileFind(pConnection); Find()4、下载文件或上传文件。 OnDownload() OnUpload()5、关闭连接。四、实验设备与器材配置:1实验室具有基于TCP/IP协议的Windows网络硬软件环境;2微机 1台。五、实验记录: 1.连接:void CFtpDlg:OnConnect() CString str

8、Connect;m_BtnConnect.GetWindowText(strConnect);pSession=NULL;pConnection=NULL;pFileFind=NULL; UpdateData(TRUE); /获得当前输入if(m_strFtpSite.IsEmpty()/判断ftp地址栏是否为空AfxMessageBox("请输入ftp服务器地址! ");return;while(m_ListFile.GetCount()!=0) /清除列表框内容m_ListFile.DeleteString(0);if(strConnect="连接"

9、) pSession=new CInternetSession(AfxGetAppName(),/创建Internet会话PRE_CONFIG_INTERNET_ACCESS);try pConnection=pSession->GetFtpConnection(m_strFtpSite, /试图建立FTP连接m_strName,m_strPwd);catch (CInternetException* e) /错误处理e->Delete();pConnection=NULL;AfxMessageBox("连接错误,请检查地址和用户名密码");return;if

10、(pConnection!=NULL)/创建CFtpFileFind对象/传递CFtpConnection对象的指针pFileFind=new CFtpFileFind(pConnection);if(Find()m_BtnConnect.SetWindowText("断开连接");if(m_strName="")m_strName=_T("anonymous");m_strPwd=_T("anonymous");UpdateData(FALSE);elseAfxMessageBox("不能正确初始化!&

11、quot;);elseif (pConnection!=NULL)pConnection->Close();delete pConnection;if (pFileFind!=NULL)pFileFind->Close();delete pFileFind;delete pSession;m_BtnConnect.SetWindowText("连接");若连接出现错误,则会显示消息框“连接错误”2.上传若没有选择文件,则会出现消息框:“选择文件”若上传成功,则出现消息框:“上传成功”同时还有上传失败的消息框。void CFtpDlg:OnUpload() Upd

12、ateData(TRUE); /获得当前输入m_EditFtp.EnableWindow(FALSE); /禁止用来输入的文本和编辑框控件m_EditName.EnableWindow(FALSE);m_EditPwd.EnableWindow(FALSE);m_StaFtp.EnableWindow(FALSE);m_StaName.EnableWindow(FALSE);m_StaPwd.EnableWindow(FALSE);m_BtnConnect.EnableWindow(FALSE); /禁止查询按钮CString strSourceName;CString strDestName

13、;CFileDialog dlg(TRUE,"","*.*");if(dlg.DoModal()=IDOK)strSourceName = dlg.GetPathName();/获得待上传得本地机文件的路径和名称strDestName = dlg.GetFileName();if(pConnection->PutFile(strSourceName,strDestName) /调用函数上传文件AfxMessageBox("上传成功! ",MB_OK|MB_ICONINFORMATION);while(m_ListFile.Get

14、Count()!=0)m_ListFile.DeleteString(0);Find();elseAfxMessageBox("上传失败! ",MB_OK|MB_ICONSTOP);elseAfxMessageBox("请选择文件! ",MB_OK|MB_ICONSTOP); /文件选择错误m_EditFtp.EnableWindow(TRUE); /激活用来输入的文本和编辑框控件m_EditName.EnableWindow(TRUE);m_EditPwd.EnableWindow(TRUE);m_StaFtp.EnableWindow(TRUE);m

15、_StaName.EnableWindow(TRUE);m_StaPwd.EnableWindow(TRUE);m_BtnConnect.EnableWindow(TRUE);/激活查询按钮3.下载 下载时也出现一系列对话框用来提示错误或非法操作。void CFtpDlg:OnDownload() UpdateData(TRUE); /获得当前输入int nSel = m_ListFile.GetCurSel();CString strSourceName;m_ListFile.GetText(nSel,strSourceName); /获得用户在列表框中的选择if(strSourceName

16、.GetAt(0)!='') /选择的是文件CString strDestName;CFileDialog dlg(FALSE,"",strSourceName);if(dlg.DoModal()=IDOK)strDestName = dlg.GetPathName();/获得下载文件在本地机上存储的路径和名称if(pConnection->GetFile(strSourceName,strDestName) /下载文件AfxMessageBox("下载成功! ",MB_OK|MB_ICONINFORMATION);m_BtnDow

17、nLoad.EnableWindow(FALSE); /禁用下载按钮elseAfxMessageBox("下载失败! ",MB_OK|MB_ICONSTOP);elseif(strSourceName="")AfxMessageBox("请写入文件名! ",MB_OK|MB_ICONSTOP);else AfxMessageBox("不能下载目录! ",MB_OK|MB_ICONSTOP);/选择的是目录m_BtnUpLoad.EnableWindow(TRUE); /激活查询和上传按钮m_EditFtp.Enab

18、leWindow(TRUE); /激活用来输入的文本和编辑框控件m_EditName.EnableWindow(TRUE);m_EditPwd.EnableWindow(TRUE);m_StaFtp.EnableWindow(TRUE);m_StaName.EnableWindow(TRUE);m_StaPwd.EnableWindow(TRUE);六、实验总结:通过此次实验,我使用MFC WinInet函数编写一个简单的FTP客户端程序,实现FTP客户端软件的基本功能检索FTP文件服务器,上传和下载。在实验中,我初步了解了CInternetSession、 CFtpFileFind类及Get

19、FtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函数的使用,并学习了FTP的编程的过程。而且通过这个实验让我对MFC的搭建也更加熟悉,温习了以前学习的代码。七、思考题或讨论题1.WinInet有什么作用?答:为了开发Internet客户端程序。MFC类库提供了专门的 Win32 Internet 扩展接口,也就是WinInet。MFC将WinInet封装在一个标准的、易于使用的类集合中。在编写WinInet客户端程序时,你既可以直接调用Win32函数,也可以使用WinInet类库。 WinInet(Windows Internet)API帮助程序员使用三个常见的Internet协议,这三个协议是:用于World Wide Web万维网的超文本传输协议(HTTP:Hypertext Transfer Protocol)、文件传输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论