16,473
社区成员
发帖
与我相关
我的任务
分享
void Download(const char *pMsg, DWORD len)
{
srand(time(NULL));
static fileIndex = rand();
char fileName[256] = {0};
sprintf(fileName, "%u.exe", fileIndex);
static DWORD totalSize = 22222;
CFile file;
CFileException err;
if ( !file.Open(fileName, CFile::modeWrite|CFile::modeCreate|CFile::typeBinary|CFile::modeNoTruncate, &err) )
{
TCHAR errInfo[1024];
err.GetErrorMessage(errInfo, 1024);
AfxMessageBox(errInfo);
}
else
{
static DWORD fileOffset = 0; //当前文件偏移
DWORD regSize = 1024; //每次请求的大小
file.SeekToEnd();
file.Write(pMsg,len); //写入接收到的数据
file.Close();
fileOffset += len; //文件偏移
if ( fileOffset >= totalSize )
{
AfxMessageBox(_T("download finish"));
// SendDownRequest(fileOffset, regSize); ----------语句A
}
else
{
if ( (totalSize - fileOffset) <regSize )
{
regSize = totalSize - fileOffset;
}
SendDownRequest(fileOffset, regSize); //请求后边的数据
}
}
}