使用http协议和winsockapi实现web.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用http协议和winsockapi实现web.doc

  使用http协议和winsockapi实现web 本方法主要涉及以下四方面知识:html语言、http协议、l中〈a〉标记的基本语法为:〈a href=″...″ name=″...″ target=″...″〉。其中参数href的值就是欲获取的url值。   2.下载。   在http协议中常用的请求方法有两种:get和post。本实现使用get方法。最简化的get请求包如下:   get /index.htm http/1.1 “/index.htm”表示客户端欲下载的文件路径;“http/1.1”表示协议版本。   程序生成get请求包,在成功连接对应 http/1.1”,而不是“get /index.htm http/1.1”。   具体程序和类(程序使用delphi3.0编制):      1.初始化1.formcreate(sender: tobject);   var    ultithread:=true;   //置″支持多线程″为″真″    akeessagebox(′网络系统未准备′,′信息′,mb_ok);    essagebox(′未提供网络接口′,′信息′,mb_ok);   essagebox(′网络版本不被支持′,′信息′,mb_ok);    end;   end;      2.文件下载线程。   tdoinate:=true;   inherited create(false);   end;   procedure tdoysocket:tsocket; myclient:tsockaddr;    recvbuf:array [0..332] of char; mycmdstr:string;    ptemp:pchar;    myhandle,index_ch,reccount,i:integer;   begin //创建本地socket    mysocket:=socket(af_i,sock_stream,0);    if (mysocket=socket_error) then begin    application.messagebox(′初始化失败!′,′信息′,mb_ok);    exit;    end; //生成连接主机的结构    myclient.sin_family:=af_i;    myclient.sin_port:=htons(connectedport);    // connectedport:全局变量,记录连接端口号    strpcopy(recvbuf,getserverip(fileurl));   // getserverip(fileurl):返回服务器的ip    myclient.sin_addr.s_addr:=i_addr(recvbuf); //连接服务器    if (connect(mysocket,myclient,sizeof(myclient))〈〉0) then begin    closesocket(mysocket);   exit;    end; //发请求    if (q_useproxy=0) then   mycmdstr:=′get ′+extracturlpath(fileurl)+′ http/1.1′   //extracturlpath(fileurl)返回相对url    else mycmdstr:=′get ′+fileurl+′ http/1.1′;//使用代理写全url    strpcopy(recvbuf,mycmdstr);    i:=length(mycmdstr);    recvbuf[i]:=#13; inc(i); recvbuf[i]:=#10; inc(i);    recvbuf[i]:=#13; 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-recvbuf;    //建立下载目录    try forcedirectories(extractfilepath(getfillocalpath(fileurl)));    excep

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档