您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页东南大学计算机网络实验2

东南大学计算机网络实验2

来源:五一七教育网
东南大学自动化学院

实 验 报 告

课程名称:

实验名称: 院 (系): 姓 名: 实 验 室: 同组人员: 评定成绩:

信息通信网络概论

第2次实验

FTP客户端通信程序设计 自动化 专 业: 自动化 肖显东 学 号: 08012112 金智楼 实验组别: 实验时间: 2014 年12 月 15日 审阅教师:

目 录

一.实验目的和要求………………………………………… 1 二.实验原理………………………………………………… 1 三.实验方案与试验步骤…………………………………… 1 四.实验设备与器材配置…………………………………… 2 五.实验记录………………………………………………… 2 六.实验总结………………………………………………… 3 七.思考题和讨论题………………………………………… 3

一. 实验目的和要求

目的:了解Windows下的TCP/IP通信方式与网络操作

熟悉FTP的编程的过程;

学会用可视化编程语言编写调试简单的通信程序。

要求:理解掌握CInternetSession、 CFtpFileFind类及GetFtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函数的使用,并熟悉FTP的编程的过程

二. 实验原理

在使用MFC编程时,要连接到FTP服务器是一件非常简单的事情,只需要两个简单

的步骤,首先必须建立一个CinternetSession对象,用类CinternetSession创建并初始化一个或几个同时存在的Internet会话(Session),并描述与代理服务器的连接(如果有必要的话),如果在程序运行期间需要保持与Internet的廉洁,可以创建一个CinternetSession对象作为类CwinApp的成员。 MFC中的类CftpConnection管理我们与Internet服务器的连接,并直接操作服务器上的目录和文件,FTP时MFC的WinInet支持的三个Internet功能之一,我们需要先创建一个CinternetSession实例和一个CftpConnection对象就可以实现和一个FTP服务器通信,我们不需要直接创建CftpConnection对象,而是通过调用CinternetSession::GetFtpConnection来完成这项工作。他创建CFtpConnection对象并返回一个指向该对象的指针。

三. 实验方案与实验步骤

CInternetSession对象

语法:CInternetSession(LPCTSTR pstrAgent,DWORD dwConText ,DWORD

dwAccessType,LPCTSTR pstrProxyName,LPCTSTR pstrProxyBypass,DWORD dwFlags);

注释:在创建CInternetSession对象时调用这个成员函数,CInternetSession是应用程序第一个要调用的Internet函数,它将创始化内部数据结构,以备将来在应用程序中调用。如果dwFlags包含INTERNET_FLAG_ASYNC,那末从这个句柄派生的所有的句柄,在状态回调例程注冊之前,都会出现异步状态。如果沒有打开Internet连接,CInternetSession就会抛出一个例外,fxThorowInternetException。 GetFtpConnection()函数。

语法:CFtpConnection* CIternetSession::GetFtpConnection(LPCTSTR

pstrServer,LPCTSTR pstrUserName,LPCTSTR pstrPassword,INTERNET_PORT nPort,BOOL bPassive);

注释:调用这个函数建立一个FTP连接,并获得一个指向CFtpConnection对象的指针,GetFtpConnection连接到一个FTP服务器,创建并返回指向CFtpConnection对象的指针,它不在服务器上进行任何操作。如果打算读写文件,必须进行分步操作。关于查找,打开和读/写文件的信息需参考CFtpConnection和CFtpFileFind类。对这个函数的调用返回一个指向CFtpConnection对象的指针。如果调用失败,检查抛出的CInternetException对象,就可以确定失败的原因。 GetFile()函数。

语法:BOOL GetFile(LPCTSTR pstrRemoteFile,LPCTSTR pstrLocalFile,BOOL bFailExists ,DWORD dwAttributes,DWORD dwFlags,DWORD dwContext);

注释:调用这个成员函数,可以从FTP服务器取得文件,并且把文件保存在本地机器上。GetFile()函数是一个比较高级的例程,它可以处理所有有关从FTP服务器读文件,以及把文件存放在本地机器上的工作。如果dwFlags为FILE_TRANSFER_TYPE_ASCII,文件数据的传输也会把控制和格式符转化为Windows中的等阶符号。默认的传输模式是二进制模式,文件会以和服务器上相同的格式被下载。

pstrRemoteFile和 pstrLocalFile可以是相对于当前目录的部分文件名,也可以是全文件名,在这两个名字中间,都既可以用反斜杠(\\)或者正斜杠(/)来作为文件名的目录分隔符,GetFile()在使用前会把目录分隔符转化为适当的字符。

可以用自己选择的值来取代dwContext默认的值,设置为上下文标识符与CFtpConnection对象的定位操作有关,这个操作由CFtpConnection中的CInternetSession对象创建。返回给CInternetSession::OnStatusCallBack的值指出了所标识操作的状态。

如果调用成功,函数的返回为非0,否则返回0,如果调用失败,可以调用Win32函数GetLastError(),确认出错的原因。 PutFile()函数。

语法:BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoveFile ,DWORD dwFlags, DWORD dwContext);

注释:调用这个成员函数可以把文件保存到FTP服务器。PutFile()函数是一个比较高级的例程,它可以处理有关把文件存放到服务器上的工作。只发送数据,或要严格控制文件传输的应用程序,应该调用OpenFile和 CInternet::Write。利用自己选择的值来取代dwContext默认的值,设置为上下文标识符,上下文标识符是CInternetSession对象创建的CFtpConnection对象的特定操作有关,这个值返回给CInternetSession::OnStateCallBack,从而把操作的状态通报给它所标识的上下文。

如果调用成功,函数的返回为非0,否则返回0,如果调用失败,可以调用Win32函数GetLastError(),确认出错的原因。

FTP文件查找函数。 调用这个成员函数构造一个CftpFileFind对象。

FindFile()函数。 调用这个函数查找FTP文件,调用它检索到第一个FTP文件后,可以调用FindNextFile()检索后面的FTP文件。

FindNextFile()函数。 调用这个函数继续查找文件,在调用任何属性以前,必须已经至少调用过一次此函数。 以上函数的具体使用方法可以参见MSDN。

四. 实验设备与器材配置

电脑xp系统 VC 6.0

五. 实验记录

六. 实验总结

通过本次实验,我了解到 Windows 下的 TCP/IP 通信方式、工作原理与网络操作方法;熟悉 FTP 的编程的过程,明白几个相关函数的作用和编程方法,主要是在已有的程序框架下,编写一个FTP客户端程序,实现连接到FTP主机、下载FTP文件服务器的文件列表、切换访问目录、向FTP服务器发送文件(上传文件)、从FTP服务器下载文件(下载文件)的功能;通过本次实验也锻炼了我们用MFC编程的能力。

七. 思考题或讨论题

1.WinInet有什么作用?

WinInet(“Windows Internet”)API帮助程序员使用三个常见的Internet协议,这三个协议是用于World Wide Web万维网的超文本传输协议(HTTP:Hypertext Transfer Protocol)、文件传输协议(FTP:File Transfer Protocol)和另一个

称为Gopher的文件传输协议

2.结合本次实验,谈谈使用MFC WinInet类有哪些优点?

Win32 Internet 扩展提供了对普通Internet协议的访问,这些协议包括:HTTP、FTP和Gopher。Gopher已经渐渐淡出。借助于WinInet编程接口,开发人员不必去了解Winsock、TCP/IP和特定Internet协议的细节就可以编写出高水平的Internet客户端程序。WinInet为所有几种协议(HTTP、FTP和Gopher)提供了统一的函数集,也就是Win32 API接口。利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中。底层协议的转换(如从FTP到HTTP)只要对源代码稍作修改就可以完成。

MFC对WinInet的封装是通过提供三个由CStdioFile派生类实现的。这三个派生

类是:CInternetFile、 CHttpFile 和 CGopherFile。对开发人员来说,不管你以前是否用过CStdioFile,WinInet都是很好理解并且易于使用的。它使得存取Internet数据易如反掌,使得Internet数据和本地数据的处理一致透明,数据的存储位置已经不再重要。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务