《网络编程》实验报告案例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
韶关学院
《网络编程》实验报告案例
实验课程名称:WIN高级编程
实验项目名称:文件上传与下载程序的设计
实验类型(打√):(基础□、综合□、设计 )
院系:计算机科学专业班级:计算机软件12本(2)姓名:学号:
指导教师:程细柱
韶关学院教务处编制
一、实验预习报告内容
预习日期2014年4月2日实验预习报告内容原则上应包含实验目的、实验所用主要仪器药品、实验原理及公式、实验预习疑问等项目。
㈠实验目的和要求
通过查看《网络编程》实验平台(下载地址:/detail/cflynn/6921289)的选项卡的“实验基础”部分知识,明白以下“实验目的”和“实验要求”:
1)掌握FTP工作原理、数据传输方式。
2)了解FTP规范(命令及响应吗)。
3)掌握两种文件传输模式下服务器与客户端的工作流程。
4)掌握FTP编程涉及的相关类及FTP重要功能的实现。
㈡实验内容
1)通过查看《网络编程》实验平台的选项卡的“实验基础”、“实验内容”和“实验实例”的具体信息,掌握“FTP程序”的设计方法。
2)查看“实验源代码”并运行“FTP服务器程序”和“FTP客户程序”设计一个类似的程序。
㈢实验仪器、设备及材料
1、一人一台计算机,先独立完成实验的预习部份,然后两人合作完成“实验过程与数据记录”部
份。
2、计算机硬件的最低配置为:PentiumⅢCPU、硬盘、彩显、局域网。
3、计算机软件的基本要求:《网络编程》实验平台、C#。
㈣实验原理
通过《网络编程》实验平台,我们明白:
1)FTP(File Transfer Protocol,文件传输协):是TCP/IP协议组中的协议之一,是Internet 传递文件最主要的方法。FTP的主要功能如下:
(1)提供文件的共享,包括程序文件和数据文件;
(2)支持间接使用远程计算机;
(3)使用户不因各类主机文件存储器系统的差异而受影响;
(4)使用TCP提供可靠且有效的传输。
通过FTP传输文件,双方至少需要建立两个TCP连接,一个称为控制连接,用于传输FTP命令;一个称为数据连接,用于传输文件数据。
2)FTP常用的两种数据传输方式:ASCII传输方式和二进制传输方式。
(1)ASCII传输方式:该方式以ASCII编码方式传输数据,适用于传输仅包含英文的命令和参
数,或者在不同的平台间传输英文文本文件的场合。在不同的平台间进行文件传输时,FTP通常会自动地调整文件的内容,把文件解释成目标计算机存储的文本文件的格式。
(2)二进制传输方式:采用该方式进行数据传输时,可以指定采用哪种编码传输命令或文件数据。如果传输的文件不是英文文本文件,或者传输的命令参数中带有中文信息,则应该采用二进制传输方式。
3)FTP的两种工作模式:
(1)Port模式(主动模式):该模式表示服务器主动连接客户端,然后传输文件。在此模式下,FTP客户端先用一个端口N(N>1024)向服务器的21号端口发起控制连接,连接成功后,再发出PORT N+1命令告诉服务器自己监听的端口号为N+1。服务器接收到该命令后,用一个新的数据端口(一般是20号端口)与客户端的端口N+1建立连接,然后进行文件数据传输,而客户端则通过监听N+1端口接收文件数据。
(2)Passive模式(PASV,被动模式):该模式表示服务器被动接受客户端连接请求,即控制连接请求和数据连接请求都由客户端发起。在此模式下,FTP客户端先随机开启一个端口N向服务器的21号端口发起控制连接,然后向服务器发送PASV命令,服务器收到此命令后,会用一个新的端口P(P>1024)进行监听,同时将该端口号告诉客户端,客户端收到响应命令后,再通过新的端口N+1连接服务器的端口P,然后进行文件数据传输。
4)利用以下FTP的USER、PASS、ACCT、REIN、QUIT、PASV、PORT、TYPE、MODE、CWD、PWD、MK、CDUP、RMD、LIS、NLST、RNFR、RNTO、DEL、RETR、STOR命令和响应码知识设计一个文件上传与下载功能的FTP服务器。
5)设计FTP客户端程序用到的相关类:
(1)FtpWebRequest类:用于实现文件传输协议(FTP)客户端功能,例如上传文件、下载文件等。用法是:先用FtpWebRequest的Create方法得到FtpWebRequest的实例。该方法有两种重载形式:FtpWebRequest.Create(String uriString)或FtpWebRequest.Create(Uri uri);如果FTP服务器不允许匿名访问,客户端必须向服务器提供用户名和密码(利用NetworkCredential类提供给服务器)。
(2)FtpWebResponse类:用于封装文件传输协议(FTP)服务器对请求的响应。该类提供操作的状态以及从服务器下载的所有数据。对应关键代码为:
FtpWebRequest request=(FtpWebRequest)FtpWebRequest.Create(ftpUriString);
FtpWebResponse response=(FtpWebResponse)request.GetResponse();
GetResponse方法建立控制连接,还可能创建数据连接。该方法在接收到响应之前一直处于组塞状态。若要防止组塞,则可通过调用BeginGetResponse和EndGetResponse方法替代GetResponse 异步执行此操作。
(3)NetworkCredential类:用于为基于密码的身份验证方案提供凭据。该类可用于多种协议。在FTP中,用于提供FTP用户名和密码。
例如:NetworkCredential networkCredential=new NetworkCredential(textBoxUserName.Text, textBoxPassword.Text);