Пример #1
0
        private async Task <FtpFeatures> GetFtpFeaturesAsync(ComplexSocket controlComplexSocket,
                                                             CancellationToken cancellationToken)
        {
            var success = await this.SendAndLogAsync(controlComplexSocket,
                                                     cancellationToken,
                                                     "FEAT");

            if (!success)
            {
                return(FtpFeatures.Unknown);
            }
            var ftpReply = await this.ReceiveAndLogAsync(controlComplexSocket,
                                                         cancellationToken);

            if (!ftpReply.Success)
            {
                return(FtpFeatures.Unknown);
            }

            var messages    = ftpReply.Messages;
            var ftpFeatures = FtpClientHelper.ParseFtpFeatures(messages);

            return(ftpFeatures);
        }
Пример #2
0
        public FtpClient()
        {
            this.Encoding       = Encoding.UTF8;
            this.ConnectTimeout = TimeSpan.FromSeconds(30);
            this.ReceiveTimeout = TimeSpan.FromSeconds(30);
            this.SendTimeout    = TimeSpan.FromMinutes(5);
            this.SocketClientAccessPolicyProtocol = SocketClientAccessPolicyProtocol.Http;

            this._ftpFeatures = new Lazy <FtpFeatures>(() =>
            {
                var controlComplexSocket = this._controlComplexSocket;
                {
                    var success = controlComplexSocket.Send("FEAT",
                                                            this.Encoding,
                                                            this.SendTimeout);
                    if (!success)
                    {
                        return(FtpFeatures.Unknown);
                    }
                }
                {
                    var complexResult = controlComplexSocket.Receive(this.Encoding,
                                                                     this.ReceiveTimeout);
                    var success = complexResult.Success;
                    if (!success)
                    {
                        return(FtpFeatures.Unknown);
                    }

                    var messages    = complexResult.Messages;
                    var ftpFeatures = FtpClientHelper.ParseFtpFeatures(messages);

                    return(ftpFeatures);
                }
            });
        }