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

📄 vc中ftp协议实现4.htm

📁 在Linux下使用GCC编制的FTP服务器
💻 HTM
📖 第 1 页 / 共 5 页
字号:
    width=8></TD>
    <TD width=744 height=7></TD>
    <TD width=8 height=7><IMG height=7 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/right_k.gif" 
    width=8></TD></TR></TBODY></TABLE>
<CENTER>
<TABLE height=7 cellSpacing=0 cellPadding=0 width=760 align=center 
bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD width=8 
    background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif 
    bgColor=#ffa200><IMG height=8 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif" 
      width=8></TD>
    <TD align=middle width=744 height=100>
      <SCRIPT 
      src="E:\Learn\Other\VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files\show(1).1]"></SCRIPT>
    </TD>
    <TD width=8 
    background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_right.gif 
    bgColor=#ffa200><IMG height=8 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_right.gif" 
      width=8></TD></TR></TBODY></TABLE>
<TABLE height=7 cellSpacing=0 cellPadding=0 width=760 align=center 
bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD width=8 
    background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif 
    bgColor=#ffa200><IMG height=8 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif" 
      width=8></TD>
    <TD style="BORDER-TOP: #000000 1px solid" width=743><SPAN 
    id=menu>-</SPAN></TD>
    <TD width=8 
    background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_right.gif 
    bgColor=#ffa200><IMG height=8 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_right.gif" 
      width=8></TD></TR></TBODY></TABLE>
<TABLE height=7 cellSpacing=0 cellPadding=0 width=760 align=center 
bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD width=8 
    background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif 
    bgColor=#ffa200><IMG height=8 
      src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/k_bg_left.gif" 
      width=8></TD>
    <TD align=middle width=744 height=100>
      <TABLE cellSpacing=0 cellPadding=0 width=744 bgColor=#ffffff border=0>
        <TBODY>
        <TR>
          <TD 
          style="BACKGROUND-POSITION: right top; BACKGROUND-ATTACHMENT: fixed" 
          vAlign=top align=middle width=577>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" border=0>
              <TBODY>
              <TR vAlign=top>
                <TD class=article>
                  <TABLE height=22 cellSpacing=0 cellPadding=2 width=554 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD vAlign=top align=right width=89>您现在的位置:</TD>
                      <TD vAlign=top width=333><A 
                        href="http://www.pconline.com.cn/pcedu/index.html">软件资讯</A>&nbsp;&gt;&nbsp;<A 
                        href="http://www.pconline.com.cn/pcedu/empolder/index.html">开发特区</A>&nbsp;&gt;&nbsp;<A 
                        href="http://www.pconline.com.cn/pcedu/empolder/gj/index.html">开发语言</A>&nbsp;&gt;&nbsp;<A 
                        href="http://www.pconline.com.cn/pcedu/empolder/gj/vc/index.html">VC/MFC</A></TD>
                      <TD width=130><A 
                        href="http://survey.pconline.com.cn/freecode/ent_code.jsp"><IMG 
                        height=15 alt=免费新闻代码 hspace=2 
                        src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/freecode.jpg" 
                        width=80 border=0></A><A 
                        href="http://www.pconline.com.cn/autopublish/rss/000000005.xml"><IMG 
                        height=14 alt=RSS新闻聚合 hspace=2 
                        src="VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/rss.gif" 
                        width=36 border=0></A></TD></TR></TBODY></TABLE>
                  <TABLE cellSpacing=0 cellPadding=6 width="99%" 
                  background=VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files/point.gif 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD align=middle colSpan=3>
                        <TABLE cellSpacing=0 cellPadding=0 width="100%" 
border=0>
                          <TBODY>
                          <TR>
                            <TD width="15%">&nbsp;</TD>
                            <TD align=middle width="68%"><FONT color=#339900 
                              size=3><B>VC中ftp协议实现多线程断点续传</B></FONT></TD>
                            <TD vAlign=bottom align=right 
                              width="17%">出处:VCkbase</TD></TR></TBODY></TABLE></TD></TR>
                    <TR>
                      <TD width=145>[ 2005-09-19 10:15:56 ] </TD>
                      <TD align=middle>作者:吴康彬 </TD>
                      <TD align=right>责任编辑:moningfeng</TD></TR></TBODY></TABLE>
                  <DIV align=center>
                  <SCRIPT 
                  src="E:\Learn\Other\VC中ftp协议实现多线程断点续传-太平洋电脑网Pconline-[VC-MFC]4.files\show(1).3]"></SCRIPT>

                  <TABLE 
                  style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid" 
                  cellSpacing=0 width=414 bgColor=#f7f8f9 border=0>
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV id=demo 
                        style="OVERFLOW: hidden; WIDTH: 380px; HEIGHT: 20px">
                        <DIV id=demo1>
                        <TABLE cellSpacing=0 cellPadding=0 width=380 border=0>
                          <TBODY>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/pingce/0507/655303.html" 
                              target=_blank><FONT 
                              color=#0000ff>影音享乐方式!Divx6完全评测</FONT></A></TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/pingce/0507/659415.html" 
                              target=_blank><FONT color=#0000ff>浏览下载一条龙,Opera BT 
                              体验</FONT></A></TD></TR>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/softnews/weedcomment/0507/660979.html" 
                              target=_blank><FONT 
                              color=#0000ff>软件观察:别让流氓软件耍无赖!</FONT></A></TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/softnews/cs/0507/660903.html" 
                              target=_blank><FONT color=#0000ff>关注!Longhorn 
                              5203多图泄漏</FONT></A></TD></TR>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/soft/wl/assist/0507/661263.html" 
                              target=_blank><FONT 
                              color=#0000ff>你会是那个超酷的"播客"吗?</FONT></A></TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/soft/gj/sys/0507/658762.html" 
                              target=_blank><FONT 
                              color=#0000ff>我与超级兔子的恋爱史</FONT></A></TD></TR>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/tuijian/media/video/0506/651499.html" 
                              target=_blank><FONT color=#0000ff>Divx 
                              Converter精彩试用</FONT></A></TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/tuijian/photo/design/0507/657089.html" 
                              target=_blank><FONT 
                              color=#0000ff>图像格式转换的好帮手</FONT></A></TD></TR>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/empolder/gj/c/0508/694099.html" 
                              target=_blank>编程盗2005版QQ</A>源码</TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/empolder/gj/java/0509/695483.html" 
                              target=_blank>论全世界所有程序员都会犯的错误</A></TD></TR>
                          <TR>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/sj/pm/photoshop/0507/661469.html" 
                              target=_blank><FONT 
                              color=#0000ff>PS立体光影魔术:在玻璃上打个洞</FONT></A></TD>
                            <TD height=18>·<A 
                              href="http://www.pconline.com.cn/pcedu/sj/pm/photoshop/0507/660964.html" 
                              target=_blank><FONT 
                              color=#0000ff>Photoshop立体魔术2:光影的奥秘</FONT></A></TD></TR></TBODY></TABLE></DIV>
                        <DIV id=demo2></DIV></DIV>
                        <SCRIPT>
   var speed=100
   demo2.innerHTML=demo1.innerHTML
   function Marquee(){
   if(demo2.offsetTop-demo.scrollTop<=0)
   demo.scrollTop-=demo1.offsetHeight
   else{
   demo.scrollTop++
   }
   }
   var MyMar=setInterval(Marquee,speed)
   demo.onmouseover=function() {clearInterval(MyMar)}
   demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}</SCRIPT>
                      </TD></TR></TBODY></TABLE></DIV><BR>  FTP多线程下载技术部分:前面我介绍了文件的保存技巧,主要也是为了多线程服务。现在有个namelock.avi文件需要下载。文件的大小为:364544字节。要用8个下载线程。 
                  第一步:将namelock.avi文件分成8个子模块。这里要注意的地方是我所说的分成8个字模块,并不是把文件的内容分别存放到8个不同的缓冲区里。而是生成8个不同的文件偏移量。很多时候程序员为了偷懒往往容易一次性讲文件读入内存,这样带来的后果是不堪设想的。一个比较理想的方法是这样的。<BR>
                  <P class=code>bool DealFile(string fileName) 
                  //随便写个函数说明<BR>{<BR>FILE *file;<BR>DWORD fileSize ,pos;<BR>int 
                  readLen ;<BR><BR>//MAX_BUFFER_LEN 
                  在头文件里定义,这里能够保证数据不丢失,也不至于内存逸出<BR>char *buffer = new 
                  char[MAX_BUFFER_LEN]; <BR>file = 
                  fopen(fileName.c_str(),"r+b");<BR>  if(file == NULL) return 
                  false;<BR>fseek(file,0,2);<BR>fileSize = ftell(file); 
                  //取得文件的大小<BR>fseek(file,0,0);<BR>do{<BR>readLen = 
                  fread(buffer,sizeof(char),MAX_BUFFER_LEN,file);<BR>if(readLen 
                  &gt; 0)<BR>{<BR>pos += 
                  readLen;<BR>//对读取的文件做处理<BR>}<BR>}while(pos &lt; fileSize); 
                  //循环读取文件<BR> delete[] buffer;<BR>fclose(file); 
                  //释放资源<BR>return true;<BR><BR>}</P>
                  <P><BR>  8个线程下载文件时,都要对内容文件和配置文件进行读写。这样如果没有处理好,很有可能会造成访问文件失败,我定义了一个全局变量FileLocked,如果FileLocked=true说明文件正在被某个线程访问。所以使用Sleep(10)睡眠等待。当某个线程进入读写文件时必须设置FileLocked 
                  = true;访问文件完毕必须将FileLocked = 
                  false;这样就能很好的控制各个线程对文件的访问了。(对临界资源的访问有API提供了很多很好的解决方法,请查阅)。<BR><BR>  8个下载线程同时下载文件时,完成部分下载是随机的。那么怎么样把随机的文件数据按照偏移量正确的写入文件呢?我是这样实现的,当要下载文件namelock.avi时,首先查找文件namelock.avi.san配置文件是否存在。如果存在,说明上次已经下载过部分该文件,就可以断点续传了。如果没有找到该文件,那么生成和该文件的大小一样大的文件,文件里所有的数据都为0,(可以使用函数memset(buffer,10000,''0''))和一个配置文件。然后利用fseek函数将数据正确的覆盖原先的0;接下来要介绍一写配置文件的格式了。</P>
                  <P>  很简单,配置文件的内容主要包括:文件在本地保存的绝对路径、文件的大小、线程的个数、已经下载的文件大小,各个线程的任务(在原始文件起始位置和结束位置,中间使用''-''分开);如:<BR></P>
                  <P class=code>D:\mm\namelock.avi //文件保存在这里 <BR>364544 
                  //文件大小<BR>5 //有5个线程在下载<BR>0 //已经下载了0字节<BR>0-72908 
                  //线程1的下载任务<BR>72908-145816 //线程2的下载任务<BR>145816-218724 
                  //线程3的下载任务<BR>218724-291632 //线程4的下载任务<BR>291632-364544 
                  //线程5的下载任务</P>
                  <P><BR>  以上是开始下载时的各个线程的任务分配。</P>
                  <P><BR clear=all>
                  <DIV class=article align=center><A 

⌨️ 快捷键说明

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