北京理工大学计算机实验三报告表

实验三 实验报告表

实验名称:字符编码与信息交换

学号: 姓名: 班级: 实验时间:

实验报告表3-1  西文字符显示过程编码记录表

实验报告表3-2 汉字显示过程编码记录表

实验报告表3-3 不同字体的字型码

 

第二篇:北京理工大学-计算机网络实践-FTP客户端实验报告

实验五 FTP客户端程序

1.实验目的

文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客户/服务器之间进行文件传递的协议。

● 理解FTP协议的工作原理

● 掌握FTP客户程序的编程方法

● 理解在FTP传输过程中建立的两个连接

2.实验内容

利用WinSock编程接口编写FTP客户程序,在用户界面中给出必要的FTP服务器信息:FTP服务器的IP地址、用户名、口令等,通过FTP协议实现指定文件的上载和下载操作。

3.实验环境

程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows,具有Internet连接能力。程序开发环境为vs2012。

4.实验步骤

步骤1 需求分析

FTP客户程序功能为:

(1) FTP客户程序首先显示用户界面,可以指定FTP服务器的地址、用户名和口令等信息

(2) 通过FTP协议接收FTP服务器的当前目录列表,并显示本地和远程目录列表信息

(3) 可以实现本地和远程目录的切换

(4) 可以实现文件的上载和下载操作

步骤2 FTP客户程序开发

用Visual C++编写FTP客户程序,利用WinSock编程接口实现FTP协议通信。FTP客户程序首先显示用户界面,使用户可以指定FTP服务器和用户、口令信息(可以采用匿名方式),点击连接按钮后,向FTP服务器的TCP 21号端口建立TCP连接,在控制连接上发送FTP命令,首先获得本地和远程系统的目录列表并显示,可以进行目录切换等操作,指定上、下载的文件建立数据连接进行文件传送。

步骤3 编译和执行程序

将FTP客户程序编译、连接成执行程序,运行FTP客户程序。填写校园网的FTP服务器IP和用户、口令信息,进行各种FTP操作(文件上载、下载)。

5.具体实现

(1) 数据结构分析

? 定义FileItem结构来保存文件信息

typedef struct FileItem

{

int nItem; // 在列表框中的索引

BOOL bDir; // 判断是否为文件夹

CString strFileName; // 文件名

}FILEITEM;

? 主对话框类完成FTP的大部分功能

其中:

? ID_control成员变量:

CListCtrl m_ctrlRemoteFiles; // IDC_LIST_REMOTE 映射的列表型变量

CListCtrl m_ctrlLocalFiles; // IDC_LIST_LOCAL 映射的列表型变量

CString m_strPassword; // IDC_PASSWORD 映射的CString型变量

CString m_strServer; // IDC_SERVER 映射的CString型变量

CString m_strUserName; // IDC_USER 映射的CString型变量

? 其他添加功能所需成员变量:

CInternetSession* m_pInetSession; // 会话对象

CFtpConnection* m_pFtpConnection; // 连接对象

CFtpFileFind* m_pRemoteFinder; // 远程查找文件对象

CFileFind m_LocalFinder; // 本地查找文件对象

CString m_strLocalParentRoot; // 本地文件目录的上上一层目录

CString m_strRemoteParentRoot; // 远程文件目录的上上一层目录

CArray<FILEITEM,FILEITEM&>m_arrLocalFiles; // 保存本地文件信息

CArray<FILEITEM,FILEITEM&>m_arrRemoteFiles; // 保存远程文件信息

? 成员函数:

/* 初始化程序 */

BOOL CMyFtpDlg::OnInitDialog()

/* 给列表控件CListCtrl增加标题头 */

void CMyFtpDlg::AddHeaders(CListCtrl* pLstCtrl)

/* 给列表框增加一条记录 */

void CMyFtpDlg::AddItem(CListCtrl* pLstCtrl,int nIndex,BOOL bDir,CString strText)

/* 响应“download”按钮 */

void CMyFtpDlg::OnDownload()

/* 响应“Upload”按钮 */

void CMyFtpDlg::OnUpload()

/* 下载单个文件 */

void CMyFtpDlg::DownFile(FILEITEM fileItem)

/* 上传单个文件 */

void CMyFtpDlg::UpFile(FILEITEM fileItem)

/* 连接ftp服务器 */

void CMyFtpDlg::OnConnect()

/* 获得指定目录下的所有文件,并在列表框中显示 */

void CMyFtpDlg::BrowseDir(CString strDir,CListCtrl* pLstCtrl,CFileFind* pFinder,CArray<FILEITEM,FILEITEM&>* pFilesArr)

/* 本地文件目录中向上一层 */

void CMyFtpDlg::OnLocalUp()

/* 远程文件目录中向上一层 */

void CMyFtpDlg::OnRemoteUp()

? 主要函数

1.在OnInitDialog()函数中进行对话框、列表的初始化,并且设定本地文件目录的默认路径为C盘为根目录。

2.在OnConnect()函数中首先进行刷新来捕获是否进行连接,如果有操作,则新建对话:

m_pInetSession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);

然后catch(CInternetException *pEx)进行错误捕获,然后定义远程文件变量以获得服务器根目录的所有文件并在列表框中显示

m_pRemoteFinder = new CFtpFileFind(m_pFtpConnection);

BrowseDir("",&m_ctrlRemoteFiles,m_pRemoteFinder,&m_arrRemoteFiles);

3. BrowseDir()函数的功能为获得指定目录下的所有文件,并在列表框中显示,利用

BOOL res = pFinder->FindFile(szDir)查找目录下的文件,利用pFinder->IsDirectory() && !pFinder->IsDots()判断是目录还是文件

(2)FTP客户端工作流程及结果

● 首先在本机配置ftp服务器

不作具体说明,配置后服务器地址为10.12.150.137

● 使用匿名账户进行登录

点击匿名登陆按钮并点击连接时,用户名自动出现“anonymous”,并进行连接。

北京理工大学计算机网络实践FTP客户端实验报告

● 上下层切换功能

本地目录进入123子目录

北京理工大学计算机网络实践FTP客户端实验报告

● 下载与上传功能

可将文件下载至123子目录下面。

北京理工大学计算机网络实践FTP客户端实验报告

北京理工大学计算机网络实践FTP客户端实验报告

也可将123目录下的文件上传至服务器

北京理工大学计算机网络实践FTP客户端实验报告

北京理工大学计算机网络实践FTP客户端实验报告

六. 实验总结

通过实验加深了我对FTP的理解。FTP(File Transfer Protocol)是 Internet 上用来传送文件的协议(文件传输协议)。它是为了我们能够在 Internet 上互相传送文件而制定的的文件传送标准,规定了 Internet 上文件如何传送。也就是说,通过 FTP 协议,我们就可以跟 Internet 上的 FTP 服务器进行文件的上传(Upload)或下载(Download)等动作。

和其他 Internet 应用一样,FTP 也是依赖于客户程序/服务器关系的概念。在 Internet 上有一些网站,它们依照 FTP 协议提供服务,让网友们进行文件的存取,这些网站就是 FTP 服务器。网上的用户要连上 FTP 服务器,就要用到 FPT 的客户端软件,通常 Windows 都有“ftp”命令,这实际就是一个命令行的 FTP 客户程序。本实验通过查阅了大量资料结合MFC做了一个很简单的界面初始完成了FTP客户端的基本功能,但是仍存在很多的不足,有时间的话我将进一步研究及完善。

相关推荐