读书人

怎么实现CInternetSession下载加速

发布时间: 2012-03-02 14:40:28 作者: rapoo

如何实现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


C/C++ code
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);} 


[解决办法]
人家写的有注释的呀

读书人网 >VC/MFC

热点推荐