HTTP VS FTP
HTTP :HyperText Transfer Protocol 超文本传输协议,是基于TCP协议
FTP: File Transfer Protocol 文件传输协议, 基于TCP协议, 基于UDP协议的FTP 叫做 TFTP
HTTP 协议 通过一个SOCKET连接传输依次会话数据。
FTP 协议中将控制命令、数据分开传输的方法,为了提高效率,FTP协议要创建2个SOCKET TCP连接,占用2个TCP,
一个连接用于传输控制命令
一个连接用于传输数据
FTP服务器的进程由两大部分组成:
一个主进程,负责接收新的请求。
另外有若干个从属进程,负责处理单个请求。
还有一个工具phpstudy 搭建ftp比较方便,同时这个工具也方便搭建php服务
IIS ftp 搭建
添加链接描述
net ftp 上传、下载
》》上传
public void UploadFile()
{
FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://xxxx");
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpWebRequest.Credentials = new NetworkCredential("用户名","密码");
using (FileStream fileStream = File.Open("需要上传文件路径",FileMode.Open,FileAccess.Read))
{
using (Stream requestStream = ftpWebRequest.GetRequestStream())
{
fileStream.CopyTo(requestStream);
using (FtpWebResponse ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse())
{
Console.WriteLine("处理状态码:"+ ftpWebResponse.StatusCode+"状态信息:"+ftpWebResponse.StatusCode);
}
}
}
}
》》》下载文件
public void DownLoadFile()
{
FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://xxxx/dd文件");
ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpWebRequest.Credentials = new NetworkCredential("用户名", "密码");
//创建要存储的文件
FileStream fileStream = File.Open("文件要存储的路径含文件名", FileMode.Open, FileAccess.Write);
FtpWebResponse ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
Stream responseStream = ftpWebResponse.GetResponseStream();
byte[] buffer = new byte[1024];
int readCount = responseStream.Read(buffer, 0, buffer.Length);
while (readCount>0)
{
fileStream.Write(buffer, 0, readCount);
readCount= responseStream.Read(buffer, readCount, buffer.Length);
}
}
》》》获取文件列表