如何实现CInternetSession下载加速?
下载小文件还可以,可是下载大文件时速度就很慢了,,,感觉跟在网页上右键“目标另存为”的速度差不多,而一些浏览器自带的下载器速度很快,差不多有4倍的下载速度,这种是通过分包下载的吗,将待下载的文件分几段下载,完成后拼接起来。这样的方式通过CInternetSession类可以实现吗?应该怎样将待下载的文件分段呢?
[解决办法]
分段下载
Asynchronous Pluggable Protocols
http://msdn.microsoft.com/en-us/library/aa767743(VS.85).aspx
有个 Passthrough APP development toolkit, 你可以下载来看看...
[解决办法]
类采用线程技术完成http下载
作者: 博云
博客: http://yiyunscu.blog.163.com
void CUIWrapper::CallOnGetGameInfoResult(tagGameDetailInfo & stInfo){ CString strXml = _T(""); strXml.AppendFormat( _T("<invoke name=\"%s\" returntype=\"void\">") _T("<arguments>") , _T("OnGetGameInfoResult") ); { strXml.Append( _T("<object>") ); { strXml.AppendFormat( _T("<property id=\"GameID\"><number>%I64d</number></property>") , stInfo.llGameID ); strXml.AppendFormat( _T("<property id=\"AgeZone\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strAgeZone) ); strXml.AppendFormat( _T("<property id=\"Category\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strCategory) ); strXml.AppendFormat( _T("<property id=\"Description\"><string>%s</string></property>") , CUIProcessor::XmlEncode( CUIProcessor::XmlEncode(stInfo.strDescription) ) ); strXml.AppendFormat( _T("<property id=\"ShortDesc\"><string>%s</string></property>") , CUIProcessor::XmlEncode( CUIProcessor::XmlEncode(stInfo.strShortDesc) ) ); strXml.AppendFormat( _T("<property id=\"GameName\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strGameName) ); strXml.AppendFormat( _T("<property id=\"LastLaunchTime\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strLastLaunchTime) ); strXml.AppendFormat( _T("<property id=\"Purpose\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strPurpose) ); strXml.AppendFormat( _T("<property id=\"ReleaseDate\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strReleaseDate) ); strXml.AppendFormat( _T("<property id=\"VideoURL\"><string>%s</string></property>") , CUIProcessor::XmlEncode(stInfo.strVideo) ); strXml.AppendFormat( _T("<property id=\"HasVideo\">%s</property>") , stInfo.bHasVideo ? _T("<true/>") : _T("<false/>") ); strXml.Append( _T("<property id=\"Shots\">") ); { strXml.Append( _T("<array>") ); for( size_t l = 0; l < stInfo.aryShot.size(); l++) { strXml.AppendFormat( _T("<property id=\"%ld\"><string>%s</string></property>") , (int)l , stInfo.aryShot[l] ); } strXml.Append(_T("</array>")); } strXml.Append( _T("</property>") ); // 大截图 strXml.Append( _T("<property id=\"ScreenShots\">") ); { strXml.Append( _T("<array>") ); for( size_t l = 0; l < stInfo.aryBigShot.size(); l++) { strXml.AppendFormat( _T("<property id=\"%ld\"><string>%s</string></property>") , (int)l , stInfo.aryBigShot[l] ); } strXml.Append(_T("</array>")); } strXml.Append( _T("</property>") ); } strXml.Append( _T("</object>") ); } strXml.Append(_T("</arguments>")); strXml.Append(_T("</invoke>")); CallFunctionSyn(strXml); AfxTrace( _T("CallOnGetGameInfoResult %I64d\n"), stInfo.llGameID);}
[解决办法]
人家写的有注释的呀