C++
에 FTP 클라이언트를 작성하여 FTP 서버에 파일을 자동 전송했습니다. 그러나 나는 FtpPutFile()
함수를 사용하려고 할 때 오류가 있습니다. 매번 사용할 때마다 GetLastError()
및 no error
의 error 2
이 perror()
에서옵니다. 내 명령 프롬프트에서 수동으로 할 수 있기 때문에 방화벽 때문이 아니라는 것을 알고 있습니다. 또한이 코드 부분에서 오류를 확인 했으므로 ftp 서버에 연결할 수 없기 때문이 아닙니다.FtpPutFile이 파일을 보내지 않음
나는 또한 Visual Studio 2010
환경에서이 개발, 그리고 난하지 그래서 나는 string.c_str()
을 사용할 수 있습니다 설정 내 Character Set
로 설정했습니다.
그래서 잘못 될 수있는 유일한 방법은 함수 자체를 호출하는 것입니다. 다음 부분은 FTP
를 통해 파일을 보낼 suposed되는 함수를 의미하는 내 코드입니다 :
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()
을 인쇄해도 적절한 파일 이름을 얻습니다.
문제가 있습니다. 질문에 추가하는 것을 잊어 버렸습니다. 지금 할 것입니다. 이 코드는 특정 유형 (.txt)의 파일과 특정 이름 구조 (일년 중 logDDD - DDD 일)가있는 경우에만 실행됩니다. – Comum
내 기능을 입력 한 후 문자가 누락되었습니다. 그래서 그것이 문제였습니다. 그것을 알아 내기 위해 모든 것을 인쇄해야했습니다. – Comum