using System; using System.Net; using System.Net.Sockets; using System.Text; using System.IO;
namespace Kostech.Net { /// <summary> /// FTP 的摘要说明。 /// </summary> public class FTP { private string strRemoteHost; private int strRemotePort; private string strRemotePath; private string strRemoteUser; private string strRemotePass; private Boolean bConnected;
#region 内部变量 /// <summary> /// 服务器返回的应答信息(包含应答码) /// </summary> private string strMsg; /// <summary> /// 服务器返回的应答信息(包含应答码) /// </summary> private string strReply; /// <summary> /// 服务器返回的应答码 /// </summary> private int iReplyCode; /// <summary> /// 进行控制连接的socket /// </summary> private Socket socketControl; /// <summary> /// 传输模式 /// </summary> private TransferType trType; /// <summary> /// 传输模式:二进制类型、ASCII类型 /// </summary> public enum TransferType { /// <summary> /// Binary /// </summary> Binary, /// <summary> /// ASCII /// </summary> ASCII }; /// <summary> /// 接收和发送数据的缓冲区 /// </summary> private static int BLOCK_SIZE = 512; Byte[] buffer = new Byte[ BLOCK_SIZE]; /// <summary> /// 编码方式 /// </summary> Encoding ASCII = Encoding.Default; #endregion
#region 内部函数 #region 构造函数 /// <summary> /// 缺省构造函数 /// </summary> public FTP() { strRemoteHost = ""; strRemotePath = ""; strRemoteUser = ""; strRemotePass = ""; strRemotePort = 21; bConnected = false; }
/// <summary> /// 构造函数 /// </summary> /// <param name="remoteHost"></param> /// <param name="remotePath"></param> /// <param name="remoteUser"></param> /// <param name="remotePass"></param> /// <param name="remotePort"></param> public FTP( string remoteHost, string remotePath, string remoteUser, string remotePass, int remotePort ) { strRemoteHost = remoteHost; strRemotePath = remotePath; strRemoteUser = remoteUser; strRemotePass = remotePass; strRemotePort = remotePort; Connect(); } #endregion
#region 登陆 /// <summary> /// FTP服务器IP地址 /// </summary> public string RemoteHost { get { return strRemoteHost; } set { strRemoteHost = value; } } /// <summary> /// FTP服务器端口 /// </summary> public int RemotePort { get { return strRemotePort; } set { strRemotePort = value; } } /// <summary> /// 当前服务器目录 /// </summary> public string RemotePath { get { return strRemotePath; } set { strRemotePath = value; } } /// <summary> /// 登录用户账号 /// </summary> public string RemoteUser { set { strRemoteUser = value; } } /// <summary> /// 用户登录密码 /// </summary> public string RemotePass { set { strRemotePass = value; } }
/// <summary> /// 是否登录 /// </summary> public bool Connected { get { return bConnected; } } #endregion
#region 链接 /// <summary> /// 建立连接 /// </summary> public void Connect() { socketControl = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPEndPoint ep = new IPEndPoint(IPAddress.Parse(RemoteHost), strRemotePort); // 链接 try { socketControl.Connect(ep); } catch(Exception) { throw new IOException("Couldn't connect to remote server"); }
// 获取应答码 ReadReply(); if(iReplyCode != 220) { DisConnect(); throw new IOException(strReply.Substring(4)); } 网络转载 [办公软件]PowerPoint2003设置对象的自定义动画 [办公软件]用PowerPoint2007做多种类型的交互练习题 [办公软件]解决PowerPoint 2007无法输入中文 [Sql Server]ASP.NET利用SQLDMO实现数据库的备份与恢复下篇 [Sql Server]ASP.NET利用SQLDMO实现数据库的备份与恢复上篇 [Sql Server]sql***delete***语句 [Web开发]net取得页面执行时间的代码 [Web开发]NET环境下实现SQL的登陆(使用代码) [Web开发]ASP.NET地址重写、使用伪静态、页面回发处理 [Web开发]NET实现文件上传CS源代码
|