Dzwebs.Net

撰写电脑技术杂文十余年

.NET2.0实现FTP上传,下载文件(支持中文名)之一

Admin | 2007-12-1 14:30:38 | 被阅次数 | 7783

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

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));
   }
网络转载


该杂文来自: 网站开发杂文

上一篇:VS2008和.NET3.5Beta2新特性(介绍及下载地址)

下一篇:.NET2.0实现FTP上传,下载文件(支持中文名)之二

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计