使用http协议和winsockapi实现webzip文件下载

使用http协议和winsockapi实现webzip文件下载

ID:25847691

大小:65.50 KB

页数:8页

时间:2018-11-23

使用http协议和winsockapi实现webzip文件下载_第1页
使用http协议和winsockapi实现webzip文件下载_第2页
使用http协议和winsockapi实现webzip文件下载_第3页
使用http协议和winsockapi实现webzip文件下载_第4页
使用http协议和winsockapi实现webzip文件下载_第5页
资源描述:

《使用http协议和winsockapi实现webzip文件下载》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、使用http协议和winsockapi实现webzip文件下载本方法主要涉及以下四方面知识:html语言、yingyong/070413/″...″name=″...″target=″...″〉。其中参数href的值就是欲获取的url值。  2.下载。  在http协议中常用的请求方法有两种:get和post。本实现使用get方法。最简化的get请求包如下:  get/index.htmhttp/1.1“/index.htm”表示客户端欲下载的文件路径;“http/1.1”表示协议版本。  程序生成get

2、请求包,在成功连接对应http/1.1”,而不是“get/index.htmhttp/1.1”。  具体程序和类(程序使用delphi3.0编制):    1.初始化1.formcreate(sender:tobject);  var  ultithread:=true;  //置″支持多线程″为″真″  akeessagebox(′网络系统未准备′,′信息′,mb_ok);  essagebox(′未提供网络接口′,′信息′,mb_ok);  essagebox(′网络版本不被支持′,′信息′,mb_o

3、k);  end;  end;    2.文件下载线程。  tdoinate:=true;  inheritedcreate(false);  end;  proceduretdownfilethread.execute;  var  mysocket:tsocket;myclient:tsockaddr;  recvbuf:array[0..332]ofchar;mycmdstr:string;  ptemp:pchar;  myhandle,index_ch,reccount,i:integer;  

4、begin//创建本地socket  mysocket:=socket(af_i,sock_stream,0);  if(mysocket=socket_error)thenbegin  application.messagebox(′初始化失败!′,′信息′,mb_ok);  exit;  end;//生成连接主机的结构  myclient.sin_family:=af_i;  myclient.sin_port:=htons(connectedport);  //connectedport:全局变量,

5、记录连接端口号  strpcopy(recvbuf,getserverip(fileurl));  //getserverip(fileurl):返回服务器的ip  myclient.sin_addr.s_addr:=i_addr(recvbuf);//连接服务器  if(connect(mysocket,myclient,sizeof(myclient))〈〉0)thenbegin  closesocket(mysocket);  exit;  end;//发请求  if(q_useproxy=0)th

6、en  mycmdstr:=′get′+extracturlpath(fileurl)+′http/1.1′  //extracturlpath(fileurl)返回相对url  elsemycmdstr:=′get′+fileurl+′http/1.1′;//使用代理写全url  strpcopy(recvbuf,mycmdstr);  i:=length(mycmdstr);  recvbuf[i]:=#13;inc(i);recvbuf[i]:=#10;inc(i);  recvbuf[i]:=#1

7、3;inc(i);recvbuf[i]:=#10;inc(i);  recvbuf[i]:=#0;  send(mysocket,recvbuf,i,0);  //发送请求读返回数据  reccount:=recv(mysocket,recvbuf,sizeof(recvbuf)-1,0);//判断是否成功  i:=0;  ysocket);exit;end;  //得到数据起始位置  ptemp:=strpos(recvbuf,#13+#10+#13+#10)+4;  index_ch:=ptemp-r

8、ecvbuf;  //建立下载目录  tryforcedirectories(extractfilepath(getfillocalpath(fileurl)));  except  end;//创建文件  deletefile(getfillocalpath(fileurl));  myhandle:=filecreate(getfillocalpath(fileurl));//如果未接收完则继续  yhandle,recv

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。