一、介绍FTP免费开源软件
1:FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,且具备所有的FTP软件功能。具有可控性,有条理的界面和管理多站点的简化方式,是的Filezilla客户端版本成为一个方便高效的FTP客户端工具,而Filezilla服务端版本则是一个小巧并且可靠支持FTP&SFTP的FTP服务器软件
二、客户端,服务端下载网址
1:下载网址:https://filezilla-project.org/
三、安装软件
1:服务端机器:FillaZilla Server端下载
2:客户端机器:FillaZilla客户端下载
四:注意事项
1:使用需要关闭防火墙开启FTP的默认21端口
2:需要注意的是客户端和服务器必须是两台不同的电脑,并且,ip地址处于同一个网段,比如ftp服务器的ip为192.168.1.100,ftp客户端的Ip为192.168.1.101
五:编码格式的介绍
常见的编码格式包括:ASCII、Unicode、UTF-8、GB2312、GB18030、UTF-16 和 ANSI。
ASCII
ASCII是一种通用的编码格式,用于表示和传输文本数据。它使用7位二进制数表示字符,总共可以表示128个字符,包括大小写英文字母、数字和一些符号。
Unicode
Unicode是一种多语言编码格式,用于表示和传输各种语言的文本数据。它是一种统一的字符编码标准,旨在为世界上所有的字符提供编码。Unicode编码范围是0x0000至0x10FFFF,包括基本多文种平面(BMP)和补充多文种平面(SMP)。
UTF-8
UTF-8是一种变长编码格式,用于表示和传输Unicode文本数据。它可以表示和传输各种语言的文本数据。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处是UTF-8保留了ASCII字符的编码作为它的一部分。
GB2312
GB2312是一种中文编码格式,用于表示和传输中文文本数据。它是一种双字节编码,总的编码范围是A1-F7,其中从A1-A9是符号区,总共包含682个符号,从B0-F7是汉字区,包含6763个汉字。
GB18030
GB18030是一种宽字符集编码格式,用于表示和传输中文文本数据。它是中国国家标准化管理委员会发布的一种汉字编码标准,兼容GB2312和GBK,并增加了对更多汉字和符号的支持。
UTF-16
UTF-16是一种变长编码格式,用于表示和传输Unicode文本数据。它使用两个字节来表示Unicode转化格式,这是定长的表示方法,不论什么字符都可以用两个字节表示。
ANSI
ANSI是一种美国国家标准协会制定的编码格式,用于表示和传输美国英语文本数据。它是针对不同操作系统和编程环境的一系列编码标准,通常指的是Windows-1252编码,它是一个单字节编码,涵盖了拉丁字母和一些控制字符
六、防火墙如何关闭
1:打开控制面板
七、FTP服务端的安装方式
1:安装软件(使用前关闭防火墙,否则连接不上)
2:8:出现You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.情况,可手动修改服务器IP地址解决,出现Warning: FTP over TLS is not enabled, users cannot securely log in.情况,可忽略不管,这是安全警告
3:解决上述问题操作步骤 编辑->设置->被动模式设置->使用下列IP(cmb命令ipconfig查询本机ip地址)->确定
4:10:设置用户和密码,以及共享文件夹(用于客户端访问)
八:FTP客户端的安装
1:安装软件(使用前关闭防火墙,否则连接不上)
2:显示如下,链接成功
3:也可通过浏览器测试,通过服务器ip地址搜索,添加服务器账号密码
九、C#代码编写类如下
1:
#region 上传单个文件到FTP服务器
/// <summary>
/// 上传单个文件到FTP服务器
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param> //没有子目录文件夹传"/"即可,有子目录文件夹传"/"+文件名+"/"
/// <param name="localFullPathName">客户端本地要上传的文件全路径</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>
/// <returns>是否上传成功</returns>z
public static bool UploadFileToFtp(string ftpFileDirectory, string localFileFullPathName, string ftpHost, string ftpUserID, string ftpPassword, Action<int, int> updateProgress = null)
{
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
FtpWebResponse FtpResponse = null;
try
{
FileInfo finfo = new FileInfo(localFileFullPathName);
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri + finfo.Name);
FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.UploadFile;//向服务器发出上传文件请求命令
FtpRequest.ContentLength = finfo.Length;//告诉FTP服务器指定上传文件的大小,以byte类型计数
FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
const int BufferSize = 2048;//设置缓冲大小
byte[] buff = new byte[BufferSize];
//进度条更新进度
int allbye = (int)finfo.Length; //文件字节总数
if (updateProgress != null)
{
updateProgress((int)allbye, 0);
}
int dataRead = 0;
int starByte = 0;
using (FileStream fileStream = finfo.OpenRead())//文件流读取需上传的文件
{
try
{
using (Stream stream = FtpRequest.GetRequestStream())//把上传文件写入流
{
do
{
dataRead = fileStream.Read(buff, 0, BufferSize);//每次读文件流2KB
if (dataRead > 0)
{
stream.Write(buff, 0, dataRead);//写入流根据文件流读取的字节个数将缓存区字节写入
}
//更新进度条
starByte = dataRead + starByte;//读取总的字节数
if (updateProgress != null)
{
updateProgress((int)allbye, (int)starByte);
}
} while (dataRead >= BufferSize);
stream.Close();//关闭流
}
}
catch (Exception)
{
return false;
}
finally
{
fileStream.Close();//关闭文件流
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
}
return true;
}
catch (Exception)
{
return false;
}
finally
{
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
}
#endregion
2:
#region 判断某个文件是否存在
/// <summary>
/// 判断某个文件是否存在
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param> //FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"
/// <param name="FtpfileName">文件名,不包含路径</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <param name="errorMessage">返回错误信息</param>
/// <returns>返回文件是否存在,true存在,否则不存在</returns>
public static bool CheckFileExist(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword, out string errorMessage)
{
bool result = false;
errorMessage = string.Empty;
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.ListDirectory;//向服务器发出文件夹集合请求命令
using (WebResponse webResponse = FtpRequest.GetResponse())
{
using (StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.GetEncoding("GB2312")))
{
string fileName = streamReader.ReadLine();
while (fileName != null)
{
if (fileName == FtpfileName)
{
result = true;
break;
}
fileName = streamReader.ReadLine();
}
}
}
}
catch (Exception ex)
{
errorMessage = ex.Message;
}
return result;
}
#endregion
3;
#region 删除单个文件
/// <summary>
/// 删除单个文件
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"
/// <param name="FtpfileName">要删除FTP服务器文件名,不包含路径</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <param name="errorMessage">返回错误信息</param>
/// <returns>返回是否删除成功,true存成功,否则失败</returns>
public static bool DeleteFileFromFtp(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword)
{
bool result = false;
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory + FtpfileName;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.DeleteFile;//向服务器发出删除文件请求命令
using (FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse)
{
if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
{
result = true;
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
#endregion
4:
#region 从FTP服务器下载单个文件
/// <summary>
/// 从FTP服务器下载单个文件
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
/// <param name="FtpfileName">要下载文件名,不包含路径</param>
/// <param name="localFileFullPathName">下载到本地的的文件全路径,文件名可以和服务器文件名不一样</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <param name="errorMessage">返回错误信息</param>
/// <returns>返回是否下载成功,true存成功,否则失败</returns>
public static bool DownLoadFileFromFtpDirectory(string ftpFileDirectory, string FtpfileName, string localFileFullPathName, string ftpHost, string ftpUserID, string ftpPassword)
{
FtpWebResponse FtpResponse = null;
bool result = false;
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory + FtpfileName;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.DownloadFile;//向服务器发出下载文件请求命令
FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
const int BufferSize = 2048;//设置缓冲大小
byte[] buff = new byte[BufferSize];
int dataRead = 0;
using (FileStream fileStream = new FileStream(localFileFullPathName, FileMode.Create))//创建流文件
{
using (Stream stream = FtpResponse.GetResponseStream())//把响应的文件写入流
{
do
{
dataRead = stream.Read(buff, 0, BufferSize);//每次读文件流2KB
if (dataRead > 0)
{
fileStream.Write(buff, 0, dataRead);//写入流根据文件流读取的字节个数将缓存区字节写入
}
} while (dataRead >= BufferSize);
result = true;
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
return result;
}
#endregion
5:
#region 获取Ftp服务器指定目录下的所有文件名
/// <summary>
/// 获取Ftp服务器指定目录下的所有文件名
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <returns></returns>
public static List<string> GetAllFileNameFromFtpDirectory(string ftpFileDirectory, string ftpHost, string ftpUserID, string ftpPassword)
{
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
List<string> fileNameList = new List<string>();
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.ListDirectory;//向服务器发出下载文件请求命令
using (FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse)
{
using (StreamReader streamReader = new StreamReader(FtpResponse.GetResponseStream(), Encoding.UTF8))//编码格式需要根据服务器编码格式来设定
{
string fileName = streamReader.ReadLine();
while (fileName != null)
{
fileNameList.Add(fileName);
fileName = streamReader.ReadLine();
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return fileNameList;
}
6:
#region 下载指定目录下的所有文件
/// <summary>
/// 下载指定目录下的所有文件
/// </summary>
/// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
/// <param name="localFullPathDirectory">本地要存放文件的文件夹全路径</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <returns></returns>
public static bool DownLoadAllFileFromFtpDirectory(string ftpFileDirectory, string localFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
{
bool result = true;
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
try
{
List<string> downLocalFileName = GetAllFileNameFromFtpDirectory(ftpFileDirectory, ftpHost, ftpUserID, ftpPassword);
if (downLocalFileName.Count > 0)
{
for (int i = 0; i < downLocalFileName.Count; i++)
{
string localFullPathName = Path.Combine(localFullPathDirectory, downLocalFileName[i]);//将文件夹全路径和文件名合并一个文件的全路径
result&= DownLoadFileFromFtpDirectory(ftpFileDirectory, downLocalFileName[i], localFullPathName, ftpHost, ftpUserID, ftpPassword );
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
#endregion
7:
#region FTP服务器创建多级文件夹
/// <summary>
/// FTP服务器创建目录,只能创建一级目录,要一层层创建,否则会出错
/// </summary>
/// <param name="ftpFullPathDirectory">所要创建的文件夹路径,包括一级文件夹,二级文件夹等</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <returns></returns>
public static bool CreatDirectoryToFtp(string ftpFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
{
bool result = false;
if (ftpHost == null || ftpHost.Trim().Length == 0)
{
throw new Exception("ftp上传目标服务器地址未设置!");
}
string[] DirectoryArray = ftpFullPathDirectory.Split('/'); //用 '/'分割成多个文件夹名称 ,例如/FTP ,用"/"分割后是两个string类型数组,第一个是"",第二个是FTP
for (int i = 0; i < DirectoryArray.Length-1; i++)
{
string[] dirArray = new string[i + 2];
Array.Copy(DirectoryArray, dirArray, dirArray.Length);
string DirectoryPath = string.Join("/", dirArray);
try
{
string ftpUri = @"ftp://" + ftpHost + DirectoryPath;
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;//向服务器发出创建文件夹请求命令
FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
if (FtpResponse.StatusCode == FtpStatusCode.PathnameCreated)
{
result = true;
}
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
return result;
}
#endregion
8:
#region 删除FTP服务器目录
/// <summary>
/// 删除FTP服务器目录
/// </summary>
/// <param name="ftpFullPathDirectory">创建的文件夹路径,包括一级文件夹,二级文件夹等</param>
/// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
/// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
/// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
/// <returns></returns>
public static bool DeleteDirectory(string ftpFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
{
bool result = false;
try
{
string ftpUri = @"ftp://" + ftpHost+ ftpFullPathDirectory;
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;//向服务器发出删除文件夹请求命令
FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
{
result = true;
}
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
#endregion
9:
#region 重命名FTP文件
/// <summary>
/// 重命名FTP文件
/// </summary>
/// <param name="ftpFileFullPath"></param>
/// <param name="FtpNewfileName"></param>
/// <param name="ftpHost"></param>
/// <param name="ftpUserID"></param>
/// <param name="ftpPassword"></param>
/// <returns></returns>
public static bool RenameFile(string ftpFileFullPath, string FtpNewfileName, string ftpHost, string ftpUserID, string ftpPassword)
{
bool result = false;
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileFullPath;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.Rename;//向服务器发出重命名请求命令
FtpRequest.RenameTo = FtpNewfileName;
FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
{
result = true;
}
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
#endregion
10:
#region 获取文件的大小
public static long GetFileSize(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword)
{
long fileSize = 0;
try
{
string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory+ FtpfileName;
Uri uri = new Uri(ftpUri);
FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
FtpRequest.Method = WebRequestMethods.Ftp.GetFileSize;//向服务器发出获取文件大小名请求命令
FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
if (FtpResponse.StatusCode == FtpStatusCode.FileStatus)
{
fileSize = FtpResponse.ContentLength;
}
if (FtpResponse != null)
{
FtpResponse.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return fileSize;
}
#endregion
11:
#region 获取动态IP地址
/// <summary>
/// 通过网址获取IP地址
/// </summary>
/// <param name="url">网址</param>
/// <returns>网址所在主机的ip</returns>
public static string GetIpAdderss(string url)
{
string ip = string.Empty;
try
{
IPAddress[] iPAddresses = Dns.GetHostAddresses(url);
if (iPAddresses.Length > 0)
{
ip = iPAddresses[0].ToString();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return ip;
}
#endregion