안녕하세요.
답변이 늦었지만, 차후 참고하시는 분이 계실까봐 리플을 답니다. --;
조금 막막하시겠지만 결론부터 말씀드리면 어떻게 짜느냐에 따라서 정말정말 달라집니다. --
FTP, HTTP 등 어떤 프로토콜을 사용하고, 어떤 방식으로 다운로드 받느냐에 따라서도 틀려지겠죠.
편리하게 사용할 수 있는것이 Indy 라는 Component인데, FTP, HTTP 등 여러가지 지원을 하고 있습니다. 아래는 HTTP로 구현을 했던 파일 다운로드 소스인데, 조금 다른 루틴과 섞여져도 있습니다.
파일 다운로드 _idSocket은 IdHTTP 입니다.
void __fastcall TAvatarDownload::Execute()
{
String stAddress, stAvatar, stFileName;
TIdHTTP *_idSocket = new TIdHTTP(NULL);
char stHeader[3];
if(ADDRESS.Trim() != "" && AVATAR.Trim() != "") {
stAddress = ADDRESS + AVATAR;
stAvatar = AVATAR.Trim();
stFileName = "C:\\Program Files\\Common Files\\JoyFunny\\" + AVATAR + ".bmp";
std::auto_ptr<TMemoryStream> BUFFER(new TMemoryStream);
BUFFER->Clear();
try {
_idSocket->ReadTimeout = 2000 + (MAX_THREAD * 200);
_idSocket->Get(stAddress, &(*BUFFER));
_idSocket->DisconnectSocket();
BUFFER->Position = 0;
BUFFER->Read(stHeader, 2);
if(!strncmp(stHeader, "JF", 2)) {
Decompress(&BUFFER);
BUFFER->SaveToFile(stFileName);
} else {
BUFFER->SaveToFile(stFileName);
}
Avatar_Process(USER_INDEX);
} catch(...) {
_idSocket->DisconnectSocket();
}
}
delete _idSocket;
Main->THREAD[THREAD_INDEX] = NULL;
}
질문자 님이 쓰신 글 :
: 버튼을 클릭하면 (예)
http://211.221.211.612/1.WMV를 다운받을수 있도록 해주는 소스를 알고 계시
: 는 분 있나요?
:
: 아시는 분은 꼭 좀 소스와 답변을 부탁드립니다.
: 이만~
: