|
인디10이고요.... 총 1.6기가 정도의 파일을 FTP로부터 받고요.. 파일갯수는 2600여개 됩니다..
그런데, 받다가 어느 순간이 되면(유동적)...
그냥 다운로드가 멈춰버립니다.. 예외처리로 검출되는 에러도 없고요..
메시지를 찍어보니 Get()에서 멈춥니다.. Get()에서 빠져나오지 못하고요.. 해당 파일은 0바이트로 저장됩니다..
OnStatus()에서 메시지를 찍어보니 "Starting FTP transfer."가 찍히고, 한참 있다가 "Transfer complete."라고 찍히고 그걸로 끝입니다..
왜 그럴까요? 소스가 지저분하지만 다운로드하는 소스는 아래와 같습니다..
bool TUpdate::DownloadFile(void)
{
int i, Count = 0;
char DownDirName[1024], DownFileName[1024], SaveFileName[1024];
TFileStream *clFs;
// 다운받을 총 파일 용량 대입
Synchronize(&ApplyTotalSize);
for(i = 0; i < DownCount; i++)
{
sprintf(DownFileName, "/%s/Version/%d/%s", exGameName.c_str(), DownList[i].Version, DownList[i].FileName);
sprintf(SaveFileName, "%sPatch\\%s", (exInstallPath + "\\" + exGameName + "\\").c_str(), DownList[i].FileName);
// 현재 총 다운로드 파일 갯수 누적
CurrCount++;
// 현재 받고 있는 파일명
CurrentFileName = DownList[i].FileName;
ReDown:
if(Count > 100)
{
RemoveFile();
return false;
}
try
{
CurrentFileName = DownFileName;
CurrentFileSize = DownList[i].FileSize;
// 현재 다운받는 파일 용량 대입
Synchronize(&ApplyFileSize);
if(Win_Main->Bar_File->MaxValue == 0)
{
Count++;
printf("TUpdate::DownloadFile1() - Count : %d\n", Count);
goto ReDown;
}
// 다운로드 시작
printf("Down(%d) : %s\n", i, DownFileName);
Win_Main->FTP_Update->Get(DownFileName, SaveFileName, true, false);
// 현재 총 다운로드 용량 누적
CurrByte += Win_Main->Bar_File->MaxValue;
Count = 0;
}
catch(Exception &e)
{
Count++;
printf("TUpdate::DownloadFile2() - Count : %d, Msg : %s\n", Count, e.Message.c_str());
goto ReDown;
}
}
return true;
}
|