当前位置: 首页 > 知识库问答 >
问题:

FTP NLST仅在某些客户端计算机上导致“425:无法打开数据连接进行传输”

夹谷鸿福
2023-03-14

我目前正在网络上运行FileZilla FTP服务器。我的问题是,在看似随机的机器上,当用户导航到一个目录(他们可以这样做)并尝试ls(即数据传输)时,他们的终端挂起等待响应,而服务器报告上述425:无法打开数据连接进行传输。此结果因所使用的客户端计算机而异,其中一些(本地或远程)可以继续,而另一些卡在此处。我知道这是因为像CWDing这样的简单FTP命令在20/21端口上运行,而FTP数据传输在其他端口号上运行,而这些端口号又可能被链条上的某个防火墙阻止。我的问题是,我如何解释这些不同的端口(如果这确实是一个问题),因为据我所知,它们可能是1024以上的任何端口?

我在这个项目中的最终目标是实现一个非常简单的FTP解决方案,理想情况下使用WinINet,但是,到目前为止,我遇到了相同的问题:

BOOL CWebFileFinder::FindFile(const CString& URL)
{
    CString ServerName;
    CString strObject;
    INTERNET_PORT nPort;
    DWORD dwServiceType = AFX_INET_SERVICE_FTP;
    if (AfxParseURL(URL, dwServiceType, ServerName, strObject, nPort))
    {
        m_Connection = m_Session.GetFtpConnection(ServerName, m_Username, m_Password, nPort/*, true*/);  // results in findfile still failing
        if (m_Connection)
        {
            m_Connection->SetCurrentDirectory("sms");  // CDs into this dir
            m_Finder = new CFtpFileFind(m_Connection);
            if (m_Finder)
            {
                More = m_Finder->FindFile(_T("*.*"));  // hangs here
            }
        }
    }
    catch (CException* pEx)
    {
        CString str;
        LPTSTR error = str.GetBuffer(255);
        pEx->GetErrorMessage(error, 255);
        pEx->Delete();
        str.ReleaseBuffer();
    }
    return More;
}

据我所知,要么我需要在LIST之前调用以打开此数据端口,要么找到阻止这些端口的防火墙并创建一个规则来防止这种情况(Winnet监听哪些端口用于Active FTP数据连接?)。当然,我也可能完全不在基地——任何见解都将不胜感激!


共有1个答案

邹慈
2023-03-14

您的FTP服务器似乎需要加密连接(TLS/SSL)。

WinInet不支持加密的FTP
有关FTP安全性和使用SSL的基础知识,请参见C/Win32。

 类似资料:
  • 我正在尝试用Java从头开始创建一个FTP客户端。 我使用Filezilla作为服务器,可以连接到某个点。我的意思是,我有命令端口工作,但无论我搜索多少,我都无法连接数据端口。 我找过的所有网站都说问题与防火墙和/或路由器有关,但是,当我尝试使用Filezilla客户端连接到服务器时,一切都很顺利。 到目前为止我所拥有的: 将我登录到服务器并断开连接。为了解决这个问题,我在线程中添加了一个infi

  • 我正在使用Teamcity在FTP中部署我的Web应用程序。在周一之前,部署工作一直很顺利。现在它不再工作了。我没有对Teamcity做任何更改。问题:FTP传输正常启动。一些文件被传输。然后它会中断FTP错误:“425无法打开数据连接”。FTP部署在我的所有其他Web应用程序上都可以正常工作。关于这个问题你能给我一个提示吗?teamcity步骤配置 日志: [13:57:10]i:[步骤1/1]

  • 我用这个上传一些文件。如果我在本地连接中,它可以工作,但如果我使用外部连接,我会收到以下消息:

  • 我需要编写一个连接到FTP服务器的应用程序。此FTP服务器不允许被动模式连接。我可以使用Filezilla连接到FTP服务器。 我开发了一个C#WCF服务,它使用FTPWebRequest类连接到此FTP服务器。以下是FTPWebRequest对象的基本设置: 当我从Visual Studio(Ctrl F5)运行WCF服务时,它连接到FTP服务器并下载所需的文件,没有任何问题 但是,当我在本地I

  • 我想将我的Azure Web应用程序创建的文件传输到Azure网络之外的FTP服务器。我得到的只是FTP上的0字节文件和Web应用程序上的“425无法打开数据连接”错误。 Azure Web应用程序或FTP服务器上是否缺少设置?在我的本地IIS Express上使用相同的Web应用程序可以正常工作。该Web应用程序使用ASP。NETMVC5。 编辑1: 这是我用来发送文件的代码: 根据MSDN,被

  • 我正在使用Teamcity在FTP中部署我的Web应用程序。在周一之前,部署工作非常顺利。现在它不再起作用了。我没有对团队城做任何修改。问题:FTP传输正常启动。有些文件被转移。然后它以FTP错误中断:“425无法打开数据连接”。FTP部署在我的所有其他Web应用程序上都运行良好。你能给我一个关于这个问题的提示吗?TeamCity step配置 日志: [13:57:10]I:[步骤1/1]<25