发送'CCC'命令后,.Net FTPS连接超时

时间:2014-02-21 10:34:17

标签: ftp ftps ccc

过去几天我用FTPS服务器一直在苦苦挣扎,需要我试图通过.Net访问的'CCC'命令

我正在使用AlexFTPS库。我能够连接和取消AUTH TLS,我能够更改目录但是当我试图列出目录或下载文件时,服务器要求'CCC'命令。当我发送'CCC'命令时,我得到一个'200 CCC Context Enabled'回复,但是当我得到服务器超时异常时我无法发送任何其他内容。

我做了进一步的测试:

  • WS_FTP:如果我选中“在SSL身份验证后使用未加密的命令通道”选项
  • ,则有效
  • Filezilla:即使我将'CCC'添加为后登录命令
  • 也不起作用
  • http://www.componentpro.com/ftp.net/:有效,但不是开源

任何帮助都会非常感激...抱歉,我不是FTP流利的......

这是我的代码:

    Using Client As New AlexPilotti.FTPS.Client.FTPSClient

        AddHandler Client.LogCommand, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogCommandEventArgs)
                                          Console.WriteLine(args.CommandText)
                                      End Sub

        AddHandler Client.LogServerReply, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogServerReplyEventArgs)
                                              Console.WriteLine(args.ServerReply)
                                          End Sub

        Dim cred = New Net.NetworkCredential("login", "password")
        Client.Connect("ftps.server.com", cred, AlexPilotti.FTPS.Client.ESSLSupportMode.CredentialsRequired)

        Client.SendCustomCommand("SYST")
        Client.SendCustomCommand("PBSZ 0")
        Client.SendCustomCommand("PROT P")
        Client.SendCustomCommand("FEAT")
        Client.SendCustomCommand("PWD")
        Client.SendCustomCommand("TYPE A")
        Client.SendCustomCommand("PASV")
        Client.SendCustomCommand("CCC")
        Client.SendCustomCommand("LIST")

        Console.ReadKey()

    End Using

谢谢!

1 个答案:

答案 0 :(得分:1)

CCC(“清除命令通道”)是一个特殊命令,它将连接从SSL(以AUTH TLS开始)降级回到未加密的连接。因此仅仅将它声明为在已建立的控制连接上发送的自定义命令是不够的,它必须由FTPS库处理类似于AUTH TLS,以便在命令完成后发生TLS降级。 / p>