繁体   English   中英

WinInet ftp连接错误123

[英]WinInet ftp connection error 123

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

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()函数。

使用过去运行良好的程序在InternetConnect上出现错误123。 我的问题是我创建的新项目被设置为使用UNICODE。 改变了这一点,一切都再次起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM