在网上搜了一下,对.Net的代理服务器和Ftp操作进行一些整理.
代理服务类NetProxy
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Net;
using
System.IO;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace
WindowsApplication4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public class NetProxy
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string _ProxyAddress = String.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string ProxyAddress
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _ProxyAddress; }
}
int _ProxyPort = 0;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public int ProxyPort
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _ProxyPort; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public NetProxy(string proxyAddress, int proxyPort)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
_ProxyAddress = proxyAddress;
_ProxyPort = proxyPort;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 获得代理服务器
/// </summary>
/// <param name="userName">代理用户名</param>
/// <param name="userKey">代理用户密码</param>
/// <returns></returns>
public WebProxy GetProxy(string userName, string userKey)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
WebProxy _WP = new WebProxy(ProxyAddress, ProxyPort);
//本地地址不使用代理服务器
_WP.BypassProxyOnLocal = true;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ICredentials credentials = new NetworkCredential(userName, userKey);
_WP.Credentials = credentials;
return _WP;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 设置全局代理服务
/// </summary>
/// <param name="webProxy"></param>
public void SetAllProxy(WebProxy webProxy)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
WebRequest.DefaultWebProxy = webProxy;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void Test(string userName, string userKey)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://www.sina.com.cn"));
request.Proxy = GetProxy(userName, userKey);
request.UserAgent = "Mozilla/4.0";
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.AllowAutoRedirect = true;
byte[] str = System.Text.Encoding.ASCII.GetBytes("username=admin");
request.ContentLength = str.Length;
Stream temps = request.GetRequestStream();
return true;
}
catch (WebException ex)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return false;
}
}
}
}
Ftp操作类
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.IO;
using
System.Net;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace
WindowsApplication4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public class Ftp
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string _ftpServerIP = String.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FtpServerIP
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _ftpServerIP; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
WebProxy _Proxy = null;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public WebProxy Proxy
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _Proxy; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string _ftpUserID = String.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FtpUserID
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _ftpUserID; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string _ftpPassword = String.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FtpPassword
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _ftpPassword; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public Ftp(string ftpServerIP, string ftpUserID, string ftpPassword, WebProxy webProxy)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
_ftpServerIP = ftpServerIP;
_ftpUserID = ftpUserID;
_ftpPassword = ftpPassword;
_Proxy = webProxy;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 创建FTP实体
/// </summary>
/// <param name="uri">InterNet的URI信息</param>
/// <returns>FTP实体</returns>
private FtpWebRequest CreatFtp(string uri)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FtpWebRequest _FtpRequest = null;
_FtpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
//指定文件传输类型
_FtpRequest.UseBinary = true;
_FtpRequest.Credentials = new NetworkCredential(FtpUserID, FtpPassword);
// 默认为true,连接不会被关闭
// 在一个命令之后被执行
_FtpRequest.KeepAlive = false;
//设置代理
_FtpRequest.Proxy = this.Proxy;
return _FtpRequest;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 上传文件
/// </summary>
/// <param name="filename">文件全名称</param>
private void Upload(string filename)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + FtpServerIP + "/" + fileInf.Name;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FtpWebRequest reqFTP = this.CreatFtp(uri);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 缓冲大小设置为2kb
int buffLength = 2048;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] buff = new byte[buffLength];
int contentLen;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 把上传的文件写入流
Stream strm = reqFTP.GetRequestStream();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 流内容没有结束
while (contentLen != 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
contentLen = fs.Read(buff, 0, buffLength);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// 关闭两个流
strm.Close();
fs.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 下载文件
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="fileName">文件名称</param>
private void Download(string filePath, string fileName)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string uri = "ftp://" + FtpServerIP + "/" + fileName;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FtpWebRequest reqFTP = this.CreatFtp(uri);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Stream ftpStream = response.GetResponseStream();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
long cl = response.ContentLength;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int bufferSize = 2048;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int readCount;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] buffer = new byte[bufferSize];
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
readCount = ftpStream.Read(buffer, 0, bufferSize);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
while (readCount > 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
outputStream.Write(buffer, 0, readCount);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ftpStream.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
outputStream.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
response.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
}
}