FTP NLST 결과 일부 클라이언트 컴퓨터에서만 '425 : 전송할 데이터 연결을 열 수 없습니다'가 표시됩니다.

윌 웹스터

현재 네트워크에서 FileZilla FTP 서버를 실행하고 있습니다. 내 문제는 겉보기에 임의의 컴퓨터에서 사용자가 디렉토리로 이동하여 (즉, 데이터 전송) 응답을 기다리는 동안 끝이 응답을 기다리는 동안 서버가 425: Can't open data connection for transfer위에서 언급 한 내용을 보고하는 것 입니다. 이 결과는 사용 된 클라이언트 시스템에 따라 달라지며 일부 (로컬 또는 원격)는 진행할 수 있고 나머지는 여기에 멈 춥니 다. 나는 CWDing 과 같은 간단한 FTP 명령 이 20/21 포트에서 작동하는 반면 FTP 데이터 전송은 다른 포트 번호에서 작동하기 때문에 체인 어딘가에있는 방화벽에 의해 차단 될 수 있다는 것을 이해합니다. 내 질문은 1024 이상의 포트가 될 수 있다는 것을 가장 잘 알고 있듯이 이러한 다양한 포트를 어떻게 설명합니까?

이 프로젝트의 최종 목표는 이상적으로는 WinINet을 사용하여 매우 간단한 FTP 솔루션을 구현하는 것이지만 지금까지 동일한 문제가 발생했습니다.

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하거나 이러한 포트를 차단하는 방화벽을 찾아이를 방지하는 규칙을 만들어야합니다 ( Wininet은 활성 FTP 데이터 연결을 위해 어떤 포트를 수신합니까? ). 물론 나는 완전히 기초를 벗어난 사람이 될 수도 있습니다. 어떤 통찰력이라도 대단히 감사하겠습니다!

마틴 프리 크릴

FTP 서버에 암호화 된 연결 (TLS / SSL)이 필요한 것 같습니다.

WinInet은 암호화 된 FTP를 지원하지 않습니다. C ++ / Win32 FTP 보안 및 SSL 사용의 기본을
참조하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관