C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[53761] BDS2007의 Indy FTP 다운로드 문제..
DoyongID [doyongid] 1494 읽음    2008-06-25 02:03
인디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;
}

+ -

관련 글 리스트
53761 BDS2007의 Indy FTP 다운로드 문제.. DoyongID 1494 2008/06/25
53764     Re:BDS2007의 Indy FTP 다운로드 문제.. 정재만 2099 2008/06/25
53767         Re:Re:암울하네요..ㅡ.ㅡ DoyongID 1557 2008/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.