Unity网络开发基础(二)
内容概况:文件传输FTP,HTTP
一、文件传输FTP
1.FTP工作原理
(1)FTP是什么??
- FTP文件传输协议,是支持Internet文件传输的各种规则所组成的集合。
- 这些规则使internet用户可以把
文件从一台主机上拷贝到另一台主机上
。- 除此之外,还提供登录、目录查询以及其他会话控制等功能。
解释
:
FTP文件协议就是一个在网络中上传下载文件的一套规则
。
(2)FTP的工作原理
FTP本质
:
FTP的本质是TCP通信
通过FTP传输文件,双发至少需要建立两个TCP连接。
一个称为控制连接,用于传输FTP命令。
一个称为数据连接,用于传输文件数据。
疑问:为什么不用一个TCP连接??
- 区分消息上有困难。如果只有一个通信连接,既要区分FTP命令,又要区分文件包,其实是很困难的。
FTP的数据连接和控制连接方向一般是相反的
举例说明:
用户使用
FTP客户端连接FTP服务器请求下载文件
控制连接方向:
客户端主动连接服务器告知其下载命令
数据连接方向:
服务端主动连接客户端下发数据
当客户端和FTP服务器建立控制连接后,需要主动告诉服务器采用哪种
传输模式
。
主动模式(Port模式)
服务器主动连接客户端,然后传输文件。
被动模式(Passive模式)
客户端主动连接服务器
即控制连接和数据连接都由客户端发起。
一般情况下主动模式会受客户端防火墙影响,所以被动模式使用较多。
在使用FTP进行数据传输时,有两种数据传输方式。
ASCLL传输方式
以ASCLL编码方式传输数据,适用于传输
仅包含
英文的命令和参数或者英文文本文件。
二进制传输方式(建议使用方式)
可以指定采用哪种编码传输命令和文件数据。
如果传输的文件不是英文文件则应该采用该方式。
一般情况下,使用FTP传输文件时。客户端必须限登录服务器,获取相应权限后,才能上传或下载文件。
服务器也可以允许用户匿名登录FTP,不需要都拥有一个合法账号。
2.搭建FTP服务器
- 下载Serv-U等FTP服务器软件,在想要作为FTP服务器的电脑上运行即可。
- 创建域 直接不停下一步即可
- 使用单向加密
- 创建用于上传下载的FTP 账号密码
3. FTP关键类
(1)NetworkCredential类
命名空间:System.Net
NetworkCredential通信凭证类
作用:用于在Ftp文件传输时,设置账号密码。
1 NetworkCredential n = new NetworkCredential("WQX","123456");
- 参数一:账号
- 参数二:密码
(2)FtpWebRequest类
- 命名空间:System.Net
- Ftp传输协议客户端操作类
- 作用:上传、下载、删除服务器上的文件。
重要方法:
Create 创建新的WebRequest,用于进行Ftp相关操作
1 FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://127.0.0.1/Test.txt"));Abort 如果正在进行文件传输,用此方法可以终止传输
1 req.Abort();
GetRequestStream 获取用于上传的流
1 Stream s = req.GetRequestStream();
GetResponse 返回FTP服务器响应
1 FtpWebResponse res = req.GetResponse() as FtpWebResponse;重要成员
Credentials 通信凭证,设置为NetworkCredential对象
1
2 //NetworkCredential n = new NetworkCredential("WQX","123456");
req.Credentials = n;
KeepAlive bool值,当完成请求时是否关闭到FTP服务器的控制连接(默认为true,不关闭)这个主要是传送命令信息的。
1 req.KeepAlive = false;
Method 操作命令设置
1 req.Method = WebRequestMethods.Ftp.DeleteFile;
UseBinary 是否使用2进制传输
1 req.UseBinary = true;
RenameTo 重命名
1 req.RenameTo = "myTest.txt";
(3)FtpWebResponse类
命名空间:System.Net
作用:它是用于封装FTP服务器对请求的响应
它提供操作状态以及从服务器下载数据
我们可以通过FtpWebRequest对象中的GetResponse()方法获取
当使用完毕时,要使用Close释放。
通过这个类来真正的从服务器获取内容。
1 FtpWebResponse res = req.GetResponse() as FtpWebResponse;
重要方法:
Close:释放所有资源。
1 res.Close();GetResponseStream:返回从FTP服务器下载数据的流。
1 Stream s = req.GetRequestStream();重要成员:
二、HTTP
1. HTTP是什么
HTTP超文本传输协议就是一个在网络中上传和下载文件的一套规则
2. HTTP的工作原理(短连接)
- 本质:
HTTP也是TCP通信
- HTTP客户端首先于服务器建立TCP连接
- 然后客户端通过套接字发送HTTP请求,并通过套接字接收HTTP响应
- 由于HTTP采用TCP传输数据,因此不会丢包,不会乱序
特点:
HTTP是以TCP方式工作的
连接—> 请求 —> 响应 —> 断开
HTTP是无状态的
HTTP使用元信息作为标头
3. HTTP协议的请求类型和响应状态码
HTTP协议响应状态码