⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symbian 2nd支持cmnet和cmwap的断点续传的rsocket实现.htm

📁 一个symbian下的多线程下载程序和文档。
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            <DIV>&nbsp;&nbsp;&nbsp; // search and jump over the http or https 
            prefix<BR>&nbsp;&nbsp;&nbsp; uri_ptr.Set(uri.Ptr(), uri.Length()) ; 
            <BR>&nbsp;&nbsp;&nbsp; find_pos = uri.Find(KHttpPrefix) ; 
            <BR>&nbsp;&nbsp; if(find_pos != KErrNotFound) 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_buf.Copy(KHttpPrefix) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            uri_ptr.Set(uri.Ptr()+tmp_buf.Length(), uri.Length() - 
            tmp_buf.Length()) ; <BR>&nbsp;&nbsp; } else { 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; find_pos = uri.Find(KHttpsPrefix) 
            ; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(find_pos != KErrNotFound) 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp_buf.Copy(KHttpsPrefix) 
            ;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uri_ptr.Set(uri.Ptr()+tmp_buf.Length(), 
            uri.Length() - tmp_buf.Length()) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp; }</DIV>
            <DIV>&nbsp;&nbsp; // get web address <BR>&nbsp;&nbsp; find_pos = 
            uri_ptr.Find(KHttpClip) ; <BR>&nbsp;&nbsp; if(find_pos != 
            KErrNotFound) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            web_addr.Copy(uri_ptr.Mid(0, find_pos)) ; <BR>&nbsp;&nbsp; }</DIV>
            <DIV>&nbsp;&nbsp; // get web file name<BR>&nbsp;&nbsp; 
            m_web_fname.Copy(uri_ptr.Ptr() + find_pos, uri_ptr.Length() - 
            find_pos) ; </DIV>
            <DIV>&nbsp;&nbsp;&nbsp;return ETrue ; <BR>}</DIV>
            <DIV><BR>TBool CM5HttpDown::GetRespField(const TDesC8&amp; recv_buf, 
            TDesC8&amp; field_name, TDesC8&amp; end_flag, TDes8&amp; res) 
            <BR>{<BR>&nbsp;TPtrC8&nbsp;&nbsp;&nbsp; ptr_hdr ; 
            <BR>&nbsp;TInt&nbsp;&nbsp; find_pos ; <BR>&nbsp;if(recv_buf.Length() 
            &lt;= 0) return EFalse ;</DIV>
            <DIV>&nbsp;find_pos = recv_buf.Find(field_name) ; 
            <BR>&nbsp;if(find_pos != KErrNotFound) {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            ptr_hdr.Set(recv_buf.Ptr() + find_pos + field_name.Length(), 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            recv_buf.Length() - find_pos - field_name.Length()) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; find_pos = ptr_hdr.Find(end_flag) 
            ;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(find_pos != KErrNotFound) 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            res.Copy(ptr_hdr.Ptr(), find_pos) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp; return ETrue ; <BR>&nbsp;}<BR>&nbsp; 
            return EFalse ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TBool CM5HttpDown::ParseWebFileInfo(const TDesC8&amp; recv_buf, 
            TInt&amp; file_length, TInt&amp; 
            jump_len)<BR>{<BR>&nbsp;TBuf8&lt;30&gt; tmp_field ; 
            <BR>&nbsp;TBuf8&lt;30&gt; tmp_end ; <BR>&nbsp;TBuf8&lt;30&gt; 
            tmp_str ; <BR>&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; find_pos 
            ; </DIV>
            <DIV>&nbsp;file_length = 0 ; <BR>&nbsp;jump_len = 0 ; </DIV>
            <DIV>&nbsp;// get web file length <BR>&nbsp;if(m_down_type == 
            HTTP_DOWN_CMWAP) 
            {<BR>&nbsp;&nbsp;tmp_field.Append(KHttpCMWapHdrFileLen) ; 
            <BR>&nbsp;} else 
            {<BR>&nbsp;&nbsp;tmp_field.Append(KHttpCMNetHdrFileLen) ; 
            <BR>&nbsp;}&nbsp;<BR>&nbsp;tmp_end.Append(KHttpHdrDiv) 
            ;<BR>&nbsp;if(!GetRespField(recv_buf, tmp_field, tmp_end, tmp_str)) 
            <BR>&nbsp;&nbsp;return EFalse ; </DIV>
            <DIV>&nbsp;&nbsp;file_length = Str2Int(tmp_str) ; </DIV>
            <DIV>&nbsp;</DIV>
            <DIV>&nbsp;// set the jump length <BR>&nbsp;find_pos = 
            recv_buf.Find(KHttpHdrEnd) ;<BR>&nbsp;if(find_pos != KErrNotFound) 
            {<BR>&nbsp;&nbsp;tmp_str.Copy(KHttpHdrEnd) ; 
            <BR>&nbsp;&nbsp;jump_len = find_pos + tmp_str.Length() ; 
            <BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; return ETrue ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TBool CM5HttpDown::InitSock(TDesC8&amp; server_name, TInt 
            server_port) <BR>{<BR>&nbsp;TBuf&lt;50&gt; svr_name ; 
            <BR>&nbsp;svr_name.Copy(server_name) ; 
            <BR>&nbsp;m_sock_eng-&gt;SetServerName(svr_name) ; 
            <BR>&nbsp;m_sock_eng-&gt;SetPort(server_port) ; 
            <BR>&nbsp;m_sock_eng-&gt;ConnectL() ; <BR>&nbsp;&nbsp;&nbsp; return 
            ETrue ; <BR>}</DIV>
            <DIV>TBool CM5HttpDown::CloseSock()<BR>{<BR>&nbsp;if(m_running 
            &amp;&amp; m_sock_eng-&gt;IsActive()) {<BR>&nbsp;&nbsp; 
            m_sock_eng-&gt;Disconnect() ; <BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; 
            return true ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TInt CM5HttpDown::Str2Int(const TDesC8 &amp; s) 
            <BR>{<BR>&nbsp;TInt value = 0 ; <BR>&nbsp;TLex8 lex(s) ; 
            <BR>&nbsp;lex.Val(value) ; <BR>&nbsp;return value ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TBool CM5HttpDown::HttpConnPorxy(TDesC8&amp; uri, TInt 
            down_type)<BR>{<BR>&nbsp;m_running = true ; <BR>&nbsp;m_down_type = 
            down_type ; <BR>&nbsp;ParseUri(uri, m_web_addr, m_web_fname, 
            m_web_port) ; <BR>&nbsp;if(m_down_type == HTTP_DOWN_CMWAP) 
            {<BR>&nbsp;&nbsp;&nbsp; TBuf8&lt;20&gt; proxy_svr ; 
            <BR>&nbsp;&nbsp;&nbsp; proxy_svr.Copy(KCMCCWapProxy) ; 
            <BR>&nbsp;&nbsp;&nbsp; if(!InitSock(proxy_svr, 80)) return EFalse 
            ;&nbsp;<BR>&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp; 
            if(!InitSock(m_web_addr, m_web_port)) return EFalse ; 
            <BR>&nbsp;}<BR>&nbsp;return ETrue ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TBool CM5HttpDown::HttpDown(TDesC8&amp; uri, TInt 
            recv_bytes)<BR>{<BR>&nbsp;TBuf8&lt;20&gt; tmp_str ; <BR>&nbsp; 
            m_recv_bytes = recv_bytes ; <BR>&nbsp; m_send_buf.SetLength(0) 
            ;&nbsp;<BR>&nbsp;&nbsp;if(m_recv_bytes == 0) 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(KHttpCommonGet1) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m_down_type == 
            HTTP_DOWN_CMWAP)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(uri) 
            ;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_send_buf.Append(m_web_fname) 
            ; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV>
            <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(KHttpCommonGet2) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(m_web_addr) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(KHttpCommonGet3) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_str.Format(_L8("%d"), 
            m_web_port) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(tmp_str) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(KHttpCommonGet4) ;<BR>&nbsp;&nbsp;} else 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(KHttpResumeGet1) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            if(m_down_type == 
            HTTP_DOWN_CMWAP)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(uri) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m_send_buf.Append(m_web_fname) ; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </DIV>
            <DIV>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(KHttpResumeGet2) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(m_web_addr) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(KHttpResumeGet3) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; tmp_str.Format(_L8("%d"), m_web_port) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(tmp_str) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(KHttpResumeGet4) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; tmp_str.Format(_L8("%d"), m_recv_bytes) 
            ;<BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(tmp_str) ; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; m_send_buf.Append(KHttpResumeGet5) ; 
            <BR>&nbsp;&nbsp;&nbsp; }</DIV>
            <DIV>&nbsp;&nbsp;&nbsp; // send the request<BR>&nbsp;&nbsp;&nbsp; 
            return SendReq(m_send_buf) ; <BR>}</DIV>
            <DIV>&nbsp;</DIV>
            <DIV>TBool CM5HttpDown::HttpStopDown()<BR>{<BR>&nbsp;&nbsp;&nbsp; 
            return CloseSock() ; <BR>}</DIV>
            <DIV><BR>大概就是这个样子了,一些使用方面的注意事项请参阅以前的帖子吧。这个chinaunix似乎把代码排版都给弄乱了,我也没办法了,凑合者用吧。欢迎各位朋友多多提意见和建议,谢谢。</DIV>
            <DIV>代码和sis文件包下载:</DIV>
            <DIV>
            <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#dddddd 
            cellSpacing=0 cellPadding=0 width=360 align=center border=1>
              <TBODY>
              <TR height=60>
                <TD align=middle width=60><IMG alt="" 
                  src="symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现.files/rar.gif" 
                  border=0></TD>
                <TD>
                  <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 
                  cellPadding=0 width="100%" border=0>
                    <TBODY>
                    <TR height=20>
                      <TD align=middle width=40>文件:</TD>
                      <TD>NetTest.rar</TD></TR>
                    <TR height=20>
                      <TD align=middle width=40>大小:</TD>
                      <TD>64KB</TD></TR>
                    <TR height=20>
                      <TD align=middle width=40>下载:</TD>
                      <TD><A 
                        href="http://blogimg.chinaunix.net/blog/upfile2/080108162635.rar">下载</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
            <DIV>&nbsp;</DIV>
            <DIV>&nbsp;</DIV></DIV></TD></TR></TBODY></TABLE>
      <P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD></TR>
  <TR>
    <TD align=middle height=25><FONT color=#295200>发表于: 2008-01-08,修改于: 
      2008-01-08 16:27,已浏览610次,有评论0条</FONT> <A id=star title=推荐这篇文章 
      onclick="NewWindows(this.href);return false;" 
      href="http://www.cublog.cn/u2/star.php?blogid=26691&amp;artid=459698">推荐</A> 
      <A id=complaint title=投诉这篇文章 onclick="NewWindows(this.href);return false;" 
      href="http://www.cublog.cn/u2/complaint.php?blogid=26691&amp;artid=459698">投诉</A> 
    </TD></TR>
  <TR>
    <TD align=middle height=9><IMG height=13 alt="" 
      src="symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现.files/line1.gif" width=702 
      border=0></TD></TR>
  <TR>
    <TD>
      <TABLE style="COLOR: #02368d; BORDER-COLLAPSE: collapse" cellSpacing=0 
      cellPadding=0 width="95%" align=center border=0>
        <TBODY></TBODY></TABLE><BR>
      <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 
      width="95%" align=center border=0>
        <TBODY>
        <TR height=25>
          <TD width=25><IMG height=16 alt="" 
            src="symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现.files/dot.gif" width=16 
            border=0></TD>
          <TD width=80><B>给我留言</B> </TD>
          <TD id=pagelist width=405></TD></TR>
        <TR>
          <TD bgColor=#90baed colSpan=3 height=2></TD></TR>
        <TR>
          <TD colSpan=3 height=2></TD></TR></TBODY></TABLE>
      <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 
      width=500 align=center border=0>
        <TBODY>
        <TR>
          <TD height=25><IFRAME name=comment 
            src="symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现.files/comment.htm" 
            frameBorder=0 width=640 
  height=160></IFRAME></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=760 
align=center bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD bgColor=#ffffff height=3></TD></TR>
  <TR>
    <TD bgColor=#dddddd height=1></TD></TR>
  <TR>
    <TD bgColor=#ffffff height=3></TD></TR>
  <TR>
    <TD align=middle>版权所有 ChinaUnix.net 页面生成时间:0.00791</TD></TR></TBODY></TABLE>
<CENTER></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -