Ошибка 12003 FTP Ошибка загрузки файла

Привет и добрый вечер

Это сосредоточено для загрузки файла FTP с использованием C++. Я пытался загрузить файл FTP, и я получаю сообщение об ошибке 12003 в Интернете, я не видел ничего полезного... кажется раздражающим.

Мой код выглядит так

  #include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <wininet.h>

#pragma comment (lib, "wininet.lib")

int main()
{
    HINTERNET hInternet;
    HINTERNET hFtpSession;

    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    if(!hInternet)
    {
        printf("Error : %d\n",GetLastError());
    }

    hFtpSession = InternetConnect(hInternet, "myohyip8.5gbfree.com", INTERNET_DEFAULT_FTP_PORT, "myohyip8", "WxqHjNGv", INTERNET_SERVICE_FTP, 0, 0);

    if(!hFtpSession)
    {
        printf("Error : %d\n",GetLastError());
    }

    if (!FtpPutFile(hFtpSession, "C:\\ivan.txt", "myivan.txt", FTP_TRANSFER_TYPE_BINARY, 0))
                {
                    printf("Error : %d\n", GetLastError());
                }
        else{
            printf("File Upload Successful :)\n");
            }
        InternetCloseHandle(hFtpSession);
       InternetCloseHandle(hInternet);

        system("PAUSE");
    return 0;
}

Это вызывает у меня беспокойство, у меня нет единой идеи о том, куда идти дальше, мне кажется ошибка файловой системы.

2 ответа

Решение

Первое, что я делаю при устранении проблем с ftp, это пытаюсь заставить обычную программу ftp (например, filezilla или что-то еще) подключиться и выполнить ту же операцию на той же машине. Если он сможет подключиться, вы сможете увидеть журнал разговоров сервера в этом программном обеспечении, который даст вам хорошие параметры для работы. Если вы не можете подключиться, вы увидите в том же журнале, в чем может быть проблема.

Без уверенности, что без использования такого программного обеспечения, я думаю, что у вас проблема с подключением в обычном режиме, и вы должны быть в пассивном режиме (по существу проблема с брандмауэром). Вы можете передать INTERNET_FLAG_PASSIVE от второго до последнего параметра вашего вызова InternetConnect. Это переключит его в пассивный режим.

например

hFtpSession = InternetConnect(hInternet, "myohyip8.5gbfree.com", INTERNET_DEFAULT_FTP_PORT, "myohyip8", "WxqHjNGv", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);

Пассивный режим также исправил мою ошибку 12111, которой не было у других участников в моей группе, возможно, это связано с работой на дому через частный Wi-Fi, не уверен. Ниже добавлен истинный аргумент. m_pConnect = m_pSession->GetFtpConnection(m_server, m_user, m_password, INTERNET_INVALID_PORT_NUMBER, true);

Другие вопросы по тегам