| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
bdnp
10年前发布

C#编写的FTP上传简单工具类

C#编写的FTP上传简单工具类

using System;  using System.Net;  using System.IO;  using System.Text;  using System.Net.Sockets;  using System.Collections;  using System.Collections.Generic;     namespace WFDownLoad_ftp  {      /// <summary>      /// FTP Client      /// </summary>      public class FTPClient      {          #region 构造函数          /// <summary>          /// 缺省构造函数          /// </summary>          public FTPClient()          {              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 FTPClient(string remoteHost, string remotePath, string remoteUser, string remotePass, int remotePort)          {              strRemoteHost = remoteHost;              strRemotePath = remotePath;              strRemoteUser = remoteUser;              strRemotePass = remotePass;              strRemotePort = remotePort;              Connect();          }          #endregion                   //public static void Main(string[] args)          //{          //    FTPClient fc = new FTPClient("172.22.1.15", "/bcgz/x25/awstod", "zxt", "123456", 21);          //    //fc.ChDir("/bcgz/x25/awstod");          //    //Console.WriteLine(fc.RemotePath);          //    fc.Get("S5290900.A1053", @"F:\ttt", "");          //    // fc.getawsFile("S5290400.A1053");          //}          #region 登陆          /// <summary>          /// FTP服务器IP地址          /// </summary>          private string strRemoteHost;          public string RemoteHost          {              get              {                  return strRemoteHost;              }              set              {                  strRemoteHost = value;              }          }          /// <summary>          /// FTP服务器端口          /// </summary>          private int strRemotePort;          public int RemotePort          {              get              {                  return strRemotePort;              }              set              {                  strRemotePort = value;              }          }          /// <summary>          /// 当前服务器目录          /// </summary>          private string strRemotePath;          public string RemotePath          {              get              {                  return strRemotePath;              }              set              {                  strRemotePath = value;              }          }          /// <summary>          /// 登录用户账号          /// </summary>          private string strRemoteUser;          public string RemoteUser          {              set              {                  strRemoteUser = value;              }          }          /// <summary>          /// 用户登录密码          /// </summary>          private string strRemotePass;          public string RemotePass          {              set              {                  strRemotePass = value;              }          }             /// <summary>          /// 是否登录          /// </summary>          private Boolean bConnected;          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("Couldnt connect to remote server");              }                 // 获取应答码              ReadReply();              if (iReplyCode != 220)              {                  DisConnect();                  throw new IOException(strReply.Substring(4));              }                 // 登陆              SendCommand("USER " + strRemoteUser);              if (!(iReplyCode == 331 || iReplyCode == 230))              {                  CloseSocketConnect();//关闭连接                  throw new IOException(strReply.Substring(4));              }              if (iReplyCode != 230)              {                  SendCommand("PASS " + strRemotePass);                  if (!(iReplyCode == 230 || iReplyCode == 202))                  {                      CloseSocketConnect();//关闭连接                      throw new IOException(strReply.Substring(4));                  }              }              bConnected = true;                 // 切换到目录              ChDir(strRemotePath);          }                /// <summary>          /// 关闭连接          /// </summary>          public void DisConnect()          {              if (socketControl != null)              {                  SendCommand("QUIT");              }              CloseSocketConnect();          }             #endregion             #region 传输模式             /// <summary>          /// 传输模式:二进制类型、ASCII类型          /// </summary>          public enum TransferType { Binary, ASCII };             /// <summary>          /// 设置传输模式          /// </summary>          /// <param name="ttType">传输模式</param>          public void SetTransferType(TransferType ttType)          {              if (ttType == TransferType.Binary)              {                  SendCommand("TYPE I");//binary类型传输              }              else              {                  SendCommand("TYPE A");//ASCII类型传输              }              if (iReplyCode != 200)              {                  throw new IOException(strReply.Substring(4));              }              else              {                  trType = ttType;              }          }                /// <summary>          /// 获得传输模式          /// </summary>          /// <returns>传输模式</returns>          public TransferType GetTransferType()          {              return trType;          }             #endregion             #region 文件操作          /// <summary>          /// 获得文件列表          /// </summary>          /// <param name="strMask">文件名的匹配字符串</param>          /// <returns></returns>          public string[] Dir(string strMask)          {              // 建立链接              if (!bConnected)              {                  Connect();              }                 //建立进行数据连接的socket              Socket socketData = CreateDataSocket();                 //传送命令              SendCommand("NLST " + strMask);                 //分析应答