设为首页 收藏本站
查看: 756|回复: 0

Ftp 类

[复制链接]

尚未签到

发表于 2015-5-27 11:27:27 | 显示全部楼层 |阅读模式
usingSystem;
usingSystem.Net;
usingSystem.IO;
usingSystem.Text;
usingSystem.Net.Sockets;
usingSystem.Diagnostics;
usingSystem.Runtime.Remoting;
usingSystem.Runtime.Remoting.Messaging;

/*
* FTP Client library inC#
* Author: JaimonMathew
*mailto:jaimonmathew@rediffmail.com
*http://www.csharphelp.com/archives/archive9.html
*
* Addapted for use by Dan Glass07/03/03
*
* modify by twh07/11/21
*/


namespacewhlib.net
{

   publicclassFtpClient
    {

        publicclassFtpException:Exception
        {
           publicFtpException(stringmessage):base(message){}
            publicFtpException(stringmessage,ExceptioninnerException):base(message,innerException){}
        }

        privatestaticintBUFFER_SIZE=512;
        privatestaticEncodingASCII=Encoding.ASCII;

        privateboolverboseDebugging=false;

        // defaults
       privatestringserver="localhost";
        privatestringremotePath=".";
        privatestringusername="anonymous";
        privatestringpassword="anonymous@anonymous.net";
        privatestringmessage=null;
        privatestringresult=null;

        privateintport=21;
        privateintbytes=0;
        privateintresultCode=0;

       privateboolloggedin=false;
        privateboolbinMode=false;

        privateByte[]buffer=newByte[BUFFER_SIZE];
        privateSocketclientSocket=null;

        privateinttimeoutSeconds=10;

        ///
        /// Defaultcontructor
        ///
        publicFtpClient()
        {
        }
        ///
        ///
        ///
        ///
        ///
        ///
        publicFtpClient(stringserver,stringusername,stringpassword)
        {
           this.server=server;
            this.username=username;
            this.password=password;
        }
        ///
        ///
        ///
       ///
        ///
        ///
        ///
        ///
        publicFtpClient(stringserver,stringusername,stringpassword,inttimeoutSeconds,intport)
        {
           this.server=server;
            this.username=username;
            this.password=password;
            this.timeoutSeconds=timeoutSeconds;
            this.port=port;
        }

        ///
       /// Display allcommunications to the debug log
        ///
        publicboolVerboseDebugging
        {
            get
            {
               returnthis.verboseDebugging;
            }
           set
            {
                this.verboseDebugging=value;
           }
        }
        ///
        /// Remote server port. Typically TCP21
        ///
        publicintPort
        {
           get
            {
                returnthis.port;
            }
           set
            {
               this.port=value;
            }
        }
        ///
        /// Timeout waiting for aresponse from server, in seconds.
        ///
       publicintTimeout
        {
           get
            {
               returnthis.timeoutSeconds;
            }
           set
            {
               this.timeoutSeconds=value;
            }
       }
        ///
        /// Gets and Sets the nameof the FTP server.
        ///
        ///
        publicstringServer
        {
           get
            {
               returnthis.server;
            }
           set
            {
               this.server=value;
            }
       }
        ///
        /// Gets and Sets the portnumber.
        ///
        ///
        publicintRemotePort
        {
            get
            {
               returnthis.port;
            }
           set
            {
               this.port=value;
            }
       }
        ///
        /// GetS and Sets the remotedirectory.
        ///
        publicstringRemotePath
       {
            get
            {
               returnthis.remotePath;
            }
           set
            {
               this.remotePath=value;
            }

        }
        ///
        /// Gets and Sets theusername.
        ///
        publicstringUsername
       {
            get
            {
               returnthis.username;
            }
           set
            {
               this.username=value;
            }
        }
        ///
        /// Gets and Set thepassword.
        ///
        publicstringPassword
        {
           get
            {
               returnthis.password;
            }
           set
            {
               this.password=value;
            }
        }

       ///
        /// If the value of mode is true, setbinary mode for downloads, else, Ascii mode.
        ///
        publicboolBinaryMode
        {
            get
            {
               returnthis.binMode;
            }
           set
            {
               if(this.binMode==value)return;

                if(value)
                    sendCommand("TYPE I");

                else
                    sendCommand("TYPE A");

               if(this.resultCode!=200)thrownewFtpException(result.Substring(4));
            }
        }
        ///
        /// Login to the remoteserver.
        ///
       publicvoidLogin()
        {
           if(this.loggedin)this.Close();

           Debug.WriteLine("Opening connection to "+this.server,"FtpClient");

            IPAddressaddr=null;
            IPEndPointep=null;

            try
            {
               this.clientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                addr=Dns.Resolve(this.server).AddressList[0];
                ep=newIPEndPoint(addr,this.port);
                this.clientSocket.Connect(ep);
            }
           catch(Exceptionex)
           {
                // doubtfull
               if(this.clientSocket!=null&&this.clientSocket.Connected)this.clientSocket.Close();

                thrownewFtpException("Couldn't connect toremote server",ex);
            }

            this.readResponse();

            if(this.resultCode!=220)
            {
               this.Close();
                thrownewFtpException(this.result.Substring(4));
            }

            this.sendCommand("USER "+username);

           if(!(this.resultCode==331||this.resultCode==230))
           {
                this.cleanup();
                thrownewFtpException(this.result.Substring(4));
            }

            if(this.resultCode!=230)
            {
               this.sendCommand("PASS "+password);

               if(!(this.resultCode==230||this.resultCode==202))
                {
                   this.cleanup();
                    thrownewFtpException(this.result.Substring(4));
                }
           }

           this.loggedin=true;

            Debug.WriteLine("Connected to "+this.server,"FtpClient");

            this.ChangeDir(this.remotePath);
        }
      
        ///
        /// Close the FTPconnection.
        ///
        publicvoidClose()
        {
           Debug.WriteLine("Closing connection to "+this.server,"FtpClient");

            if(this.clientSocket!=null)
            {
               this.sendCommand("QUIT");
            }

            this.cleanup();
        }

        ///
        /// Return a string arraycontaining the remote directory's file list.
       ///
        ///
        publicstring[]GetFileList()
        {
           returnthis.GetFileList("*.*");
        }

        ///
        /// Return a string arraycontaining the remote directory's file list.
        ///
       ///
        ///
        publicstring[]GetFileList(stringmask)
        {
           if(!this.loggedin)this.Login();

           SocketcSocket=createDataSocket();

            this.sendCommand("NLST "+mask);

            if(!(this.resultCode==150||this.resultCode==125))thrownewFtpException(this.result.Substring(4));

           this.message="";

           DateTimetimeout=DateTime.Now.AddSeconds(this.timeoutSeconds);

            while(timeout>DateTime.Now)
           {
                intbytes=cSocket.Receive(buffer,buffer.Length,0);
                this.message+=ASCII.GetString(buffer,0,bytes);

                if(bytes

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71202-1-1.html 上篇帖子: Ftp实用类 下篇帖子: Linux下FTP的配置文件的参数详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表