











该代码源自互联网,并经过修改:
解决了中文文件名会出现乱码的情况;
改善了上传不稳定的问题(但没有从根本上解决,目前只知道在接收Socket时有时会收到一半就退出,结果造成接收数据不完整,经常出现在Dir时。尚未仔细研究。)
FtpClient.cs
/// <summary>
/// FtpClient 的摘要说明。
/// </summary>
public class FtpClient : IDisposable
{
私有变量
// 构造方法
构造方法
// 属性
BlockSize 接收和发送数据的缓冲区大小
ServerAddress Ftp 服务器地址
ServerPort Ftp 服务器端口
RemotePath 当前服务器目录
LoginUser 登录用户账号
LoginPassword 用户登录密码
Connected 是否登录
// 接口
IDisposable 成员
// 私有方法
ReadReply
CreateDataSocket 建立进行数据连接的socket
CloseSocketConnect 关闭socket连接(用于登录以前)
ReadLine 读取Socket返回的所有字符串
SendCommand 发送命令并获取应答码和最后一行应答字符串
// 公共方法
Connect 建立连接
EnsureConnected 确保已经连接到服务器
Close 关闭连接
TransferType 获取或设置传输模式
Dir 获得文件列表
GetFileSize 获取文件大小
Delete 删除
Rename 重命名文件(如果新文件名与已有文件重名,将覆盖已有文件)
Download 下载文件
Upload 上传文件
MakeDirectory 创建目录
RenameDirectory 删除目录
ChangeDirectory 改变当前目录
}
FtpClientException.cs
/// <summary>
/// FtpClientException 的摘要说明。
/// </summary>
[Serializable]
public class FtpClientException : Exception
{
构造方法
}
}
FtpReply.cs
/// <summary>
/// FtpReply 的摘要说明。
/// </summary>
[Serializable]
public class FtpReply
{
private int _code;
private string _message;
public FtpReply() : this(0, string.Empty)
{
}
public FtpReply(int code, string message)
{
this._code = code;
this._message = message;
}
public int Code
{
get
{
return this._code;
}
set
{
this._code = value;
}
}
public string Message
{
get
{
return this._message;
}
set
{
this._message = value;
}
}
}
FtpTransferType.cs
/// <summary>
/// 传输模式。
/// </summary>
public enum FtpTransferType
{
/// <summary>
/// 二进制模式。
/// </summary>
Binary,
/// <summary>
/// ASCII 模式。
/// </summary>
ASCII
};
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。