c++ - WinInet ftp 连接错误 123

标签 c++ winapi ftp wininet

我正在尝试通过 C++/WinInet 连接到我的 ftp 服务器,但我一直收到错误 123 (ERROR_INVALID_NAME)。谷歌研究说这个错误是由错误的服务器地址引起的,但我的地址是有效的,与我的用户名和密码相同。这是我的代码:

void FileSubmit(LPCWSTR addr, LPCWSTR login, LPCWSTR pass, LPCWSTR pcFile, LPCWSTR ftpFile)
{
    HINTERNET hInternet;
    HINTERNET hFtpSession;
    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
    if (hInternet == NULL)
    {
        cout << "Error: " << GetLastError();
    }
    else
    {
        cout<<"Connecting to :"<<(char*)login<<" @ "<<(char*)addr<<", to upload file from PC: "<<(char*)pcFile<<" as "<<(char*)ftpFile<<endl;
        hFtpSession = InternetConnect(hInternet, addr, INTERNET_DEFAULT_FTP_PORT, 
                    login, pass, INTERNET_SERVICE_FTP, NULL, NULL);
        if (hFtpSession == NULL)
        {
            cout<<"FTPSESSION ERROR!\n";
            cout << "Error: " << GetLastError();
        }
        else
        {
            cout<<"hFTPsession successfull!\n";
            if (!FtpPutFile(hFtpSession, pcFile, ftpFile, FTP_TRANSFER_TYPE_BINARY, 0))
            {
                cout << "Error: " << GetLastError();
            }
            else
                cout<<"FILE "<<(char*)pcFile<<" HAS BEEN SUCCESSFULLY UPLOADED AS "<<(char*)ftpFile<<"!\n";
        }
    }
}

我正在使用它:

FileSubmit((LPCWSTR)"ftp.ibieda.cba.pl",(LPCWSTR)"login",
               (LPCWSTR)"pass",(LPCWSTR)"C:\\file.txt",(LPCWSTR)"\\file.txt");

任何人都可以帮助并告诉我为什么 InternetConnect 返回 123 (ERROR_INVALID_NAME) 吗?

最佳答案

您从 const char*const wchar* 的类型转换是错误的。传递宽字符串文字(例如,L"ftp.ibieda.cpl.pl")或使用 MultiByteToWideChar() 函数。

关于c++ - WinInet ftp 连接错误 123,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228996/

相关文章:

windows - Windows HANDLE 在 64 位应用程序上的范围是多少?

c++ - 如果原始文件被锁定,是否可以从挂载点读取?

java - 使用 java.net 在 Java 中创建 FTP 客户端 - 连接被拒绝 : connect

python - 使用 Python 下载 zip 文件并将其写入磁盘是否有特殊技巧?

c++ - 将 vector <Point3d> 转换为大小为 (n x 3) 的 Mat,反之亦然

c++ - 在回溯期间检索 sigcontext

c++ - 创建一个窗口应用程序,每 10 分钟执行一次特定操作

c++ - 纯 Win32 C++ 中的自定义菜单边框(无 WTL、MFC 等)

c++ - 错误 : invalid conversion from ‘char*’ to ‘char’ [-fpermissive]

c - ftp 客户端从服务器读取不完整的消息