我在C++
编写了一个FTP客户端,自动将文件发送到FTP服务器。但是当我尝试使用函数FtpPutFile()
时出错。我每次使用它时都会从error 2
函数GetLastError()
和no error
perror()
获得Visual Studio 2010
。我知道这不是因为防火墙,因为我可以从命令提示符手动完成。另外,这不是因为我无法连接到ftp服务器,因为我检查了这部分代码中的错误。
我也是在Character Set
环境中开发此功能,我已将string.c_str()
设置为未设置,因此我可以使用FTP
。
所以唯一可能出错的是我如何调用函数本身。下一部分是我的代码,它引用了通过void fileTransfer(const std::string& filename)
{
LPCTSTR pstrServer = TEXT("ip.address");
LPCTSTR pstrUserName = TEXT("user");
LPCTSTR pstrPassword = TEXT("pass");
LPCTSTR lpszLocalFile = (LPCTSTR)filename.c_str();
LPCTSTR lpszNewRemoteFile = (LPCTSTR)filename.c_str();
HINTERNET hSession = InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
HINTERNET hService = InternetConnect(hSession, pstrServer, INTERNET_DEFAULT_FTP_PORT, pstrUserName, pstrPassword, INTERNET_SERVICE_FTP, 0, 0);
if(FtpPutFile(hService, filename.c_str(), filename.c_str(), FTP_TRANSFER_TYPE_ASCII, 0))
{
printf("File copied\n");
}
else
{
printf("File not copied\n");
std::cerr << "Error: " << GetLastError() << std::endl;
perror( "Error transfering file" );
putchar('\n');
}
InternetCloseHandle(hService);
InternetCloseHandle(hSession);
}
发送文件的函数:
.txt
有谁知道这里可能有什么问题?因为此代码仅在找到具有特定结构名称的特定类型的文件FtpPutFile()
时运行。但是在filename.c_str()
它说没有找到它。即使我打印{{1}},我也会得到正确的文件名。
答案 0 :(得分:1)
GetLastError 2表示&#34;找不到文件&#34;。
我会检查FtpPutFile语句中的源和目标参数的内容。