大众计算机学习网

专门提供各种电脑教程

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

Admin | 2007-12-1 14:34:43 | 被阅次数 | 5878

/// <summary>
  /// 读取Socket返回的所有字符串
  /// </summary>
  /// <returns>包含应答码的字符串行</returns>
  private string ReadLine()
  {
   while(true)
   {
    int iBytes = socketControl.Receive(buffer, buffer.Length, 0);
    strMsg += ASCII.GetString(buffer, 0, iBytes);
    if(iBytes < buffer.Length)
    {
     break;
    }
   }
   char[] seperator = {'\n'};
   string[] mess = strMsg.Split(seperator);
   if(strMsg.Length > 2)
   {
    strMsg = mess[mess.Length-2];
    //seperator[0]是10,换行符是由13和0组成的,分隔后10后面虽没有字符串,
    //但也会分配为空字符串给后面(也是最后一个)字符串数组,
    //所以最后一个mess是没用的空字符串
    //但为什么不直接取mess[0],因为只有最后一行字符串应答码与信息之间有空格
   }
   else
   {
    strMsg = mess[0];
   }
   if(!strMsg.Substring(3,1).Equals(" "))//返回字符串正确的是以应答码(如220开头,后面接一空格,再接问候字符串)
   {
    return ReadLine();
   }
   return strMsg;
  }


  /// <summary>
  /// 发送命令并获取应答码和最后一行应答字符串
  /// </summary>
  /// <param name="strCommand">命令</param>
  private void SendCommand(string strCommand)
  {
   Byte[] cmdBytes = ASCII.GetBytes((strCommand + "\r\n").ToCharArray());
   socketControl.Send(cmdBytes, cmdBytes.Length, 0);
   ReadReply();
  }

  #endregion
 }
}

使用时可采用以下方法实现!!!

FTP myftp = new FTP([ftp主机], [主机目录], [ftp用户名], [ftp用户密码], [ftp端口]);
myftp.Put( [本地文件全路径]); // 上传到服务器中
myftp.Get([ftp文件名称(可以是通配符表示)], [本地存放路径]); //下载到本地

其它方法的使用可以参考我代码中的注释


//以上代码可以同放在一个CS文件里面

网络转载