亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.pas

?? 這兩個函數 function app_path1:string function socket_rec_line1(socket1:TCustomWinSocket timeout1:integ
?? PAS
字號:
unit Unit1;

interface

uses
  {}filectrl,inifiles,{}Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ExtCtrls;

type
  Tbuf_char=array[0..4095] of char;
  Tbuf_byte=array[0..4095] of byte;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Memo1: TMemo;
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Button3: TButton;
    Button4: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label1: TLabel;
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    filename1:string; //本地文件名
    serfilename:string;  //服務器端文件名
    serhost1:string;  //服務器地址
    can_rec1:boolean; //是否可以接收
    stop1:boolean; //是否停止

  end;

var
  Form1: TForm1;
  pos1:longint; //上次下載到的位置


implementation


{$R *.dfm}

function app_path1:string;
begin
  result:=extractfilepath(application.ExeName);
end;


//接收一行數據//socket,超時,結束符
function socket_rec_line1(socket1:TCustomWinSocket;timeout1:integer;crlf1:string=#13#10):string;
var
  buf1:Tbuf_char;
  r1:integer;
  ts1:TStringStream; //保存所有的數據

  FSocketStream: TWinSocketStream;

begin

  ts1:=TStringStream.Create('');
  FSocketStream:= TWinSocketStream.create(Socket1, timeout1);


  //while true do//下面的一句更安全,不過對本程序好象沒起作用
  while (socket1.Connected=true) do
  begin

    //確定是否可以接收數據
    //只能確定接收的超時,可見WaitForData的源碼
    if not FSocketStream.WaitForData(timeout1) then break; //continue;

    //這一句是一定要有的,以免返回的數據不正確
    zeromemory(@buf1,sizeof(buf1));
    r1 := FsocketStream.Read(buf1, 1); //每次只讀一個字符,以免讀入了命令外的數據
    //讀不出數據時也要跳出,要不會死循環
    if r1=0 then break; //test
    //用FsocketStream.Read能設置超時
    //r1:=socket1.ReceiveBuf(buf1,sizeof(buf1));
    ts1.Write(buf1,r1);

    //讀到回車換行符了
    if pos(crlf1,ts1.DataString)<>0 then
    begin
      break;
    end;

  end;

  result:=ts1.DataString;

  //沒有讀到回車換行符,就表示有超時錯,這時返回空字符串
  if pos(crlf1,result)=0 then
  begin
    result:='';
  end;

  ts1.Free;
  FSocketStream.Free;

end;


  function get_host1(in1:string):string;
  begin
    in1:=trim(in1);
    if pos('http://',lowercase(in1))=1 then
    begin
      in1:=copy(in1,length('http://')+1,length(in1));
    end;
    if pos('/',in1)<>0 then
    begin
      in1:=copy(in1,0,pos('/',in1)-1);
    end;  
    result:=in1;
  end;

  function get_file1(in1:string):string;
  begin
    in1:=trim(in1);
    if pos('http://',lowercase(in1))=1 then
    begin
      in1:=copy(in1,length('http://')+1,length(in1));
    end;
    if pos('/',in1)<>0 then
    begin
      in1:=copy(in1,pos('/',in1)+1,length(in1));
    end;  
    result:=in1;

  end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add(socket.ReceiveText);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  url1:string;
  buf1:Tbuf_byte;
  rec1:longint;
  f1:file;

  cmd1:string; //這一行的內容
  reclen1,real_reclen1:longint; //服務器返回的長度;實際已經收到的長度
  value1:string; //標志們的值
  total_len1:longint; //數據總長

begin
  try

    //self.filename1:='c:\temp1.dat';
    assignfile(f1,self.filename1);
    can_rec1:=false;
    self.stop1:=false;

    if FileExists(self.filename1)=true then
    begin
      reset(f1,1);
      pos1:=filesize(f1);
    end
    else
    begin
      rewrite(f1,1);
      pos1:=0;
    end;

    seek(f1,pos1);


    ClientSocket1.Active:=false;
    ClientSocket1.Host:=get_host1(edit1.Text);
    ClientSocket1.Port:=80;


    url1:='';

    self.serfilename:=get_file1(edit1.Text);
    self.serhost1:=get_host1(edit1.Text);

    //取得文件長度以確定什么時候結束接收[通過"head"請求得到]

    ClientSocket1.Active:=false;
    ClientSocket1.Active:=true;
    url1:='';
    
    url1:=url1+'HEAD /'+self.serfilename+' HTTP/1.1'+#13#10;

    //不使用緩存,我附加的
    //與以前的服務器兼容
    url1:=url1+'Pragma: no-cache'+#13#10;
    //新的
    url1:=url1+'Cache-Control: no-cache'+#13#10;

    //不使用緩存,我附加的_end;

    url1:=url1+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)'+#13#10;
    //下面這句必須要有
    //url1:=url1+'Host: clq.51.net'+#13#10;
    url1:=url1+'Host: '+self.serhost1+#13#10;
    url1:=url1+#13#10;
    
    ClientSocket1.Socket.SendText(url1);

    while ClientSocket1.Active=true do
    begin

      if self.stop1=true then break;

      cmd1:=socket_rec_line1(ClientSocket1.Socket,60*1000);

      //計算文件的長度

      if pos(lowercase('Content-Length: '),lowercase(cmd1))=1 then
      begin
        value1:=copy(cmd1,length('Content-Length: ')+1,length(cmd1));
        total_len1:=strtoint(trim(value1));
      end;

      //計算文件的長度_end;

      if cmd1=#13#10 then break;
    end;  

    //取得文件長度以確定什么時候結束接收_end;

    //發送get請求,以得到實際的文件數據

    clientsocket1.Active:=false;
    clientsocket1.Active:=true;

    url1:='';

    //url1:=url1+'GET http://clq.51.net/textfile.zip HTTP/1.1'+#13#10;
    //url1:=url1+'GET /textfile.zip HTTP/1.1'+#13#10;
    url1:=url1+'GET /'+self.serfilename+' HTTP/1.1'+#13#10;
    url1:=url1+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'+#13#10;
    //應該可以不要url1:=url1+'Accept-Language: zh-cn'+#13#10;
    //應該可以不要url1:=url1+'Accept-Encoding: gzip, deflate'+#13#10;

    //不使用緩存,我附加的
    //與以前的服務器兼容
    //url1:=url1+'Pragma: no-cache'+#13#10;
    //新的
    //url1:=url1+'Cache-Control: no-cache'+#13#10;

    //不使用緩存,我附加的_end;

    url1:=url1+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)'+#13#10;
    //接受數據的范圍,可選
    //url1:=url1+'RANGE: bytes=533200-'+#13#10;
    url1:=url1+'RANGE: bytes='+inttostr(pos1)+'-'+#13#10;
    //下面這句必須要有
    //url1:=url1+'Host: clq.51.net'+#13#10;
    url1:=url1+'Host: '+self.serhost1+#13#10;
    //應該可以不要
    //url1:=url1+'Connection: Keep-Alive'+#13#10;
    url1:=url1+#13#10;
    ClientSocket1.Socket.SendText(url1);

    while ClientSocket1.Active=true do
    begin

      if self.stop1=true then break;

      cmd1:=socket_rec_line1(ClientSocket1.Socket,60*1000);

      //是否可接收
      if pos(lowercase('Content-Range:'),lowercase(cmd1))=1 then
      begin
        can_rec1:=true;
      end;

      //是否可接收_end;

      //計算要接收的長度
      
      if pos(lowercase('Content-Length: '),lowercase(cmd1))=1 then
      begin
        value1:=copy(cmd1,length('Content-Length: ')+1,length(cmd1));
        reclen1:=strtoint(trim(value1));
      end;

      //計算要接收的長度_end;

      //頭信息收完了
      if cmd1=#13#10 then break;
    end;

    real_reclen1:=0;
    while ClientSocket1.Active=true do
    begin


      if self.stop1=true then break;

      //不能接收則退出
      if can_rec1=false then break;

      //如果文件當前的長度大于服務器標識的長度,則是出錯了,不要寫入文件中
      if filesize(f1)>=total_len1 then
      begin
        showmessage('文件已經下載完畢了!');
        break;
      end;

      zeromemory(@buf1,sizeof(buf1));
      rec1:=ClientSocket1.Socket.ReceiveBuf(buf1,sizeof(buf1));

      //如果實際收到的長度大于服務器標識的長度,則是出錯了,不要寫入文件中
      if real_reclen1>=reclen1 then
      begin
        showmessage('文件已經下載完畢了!');
        break;

      end;
      //如果當前的長度大于服務器標識的長度,則是出錯了,不要寫入文件中
      if pos1=reclen1 then
      begin
        showmessage('文件已經下載完畢了!');
        break;

      end;

      blockwrite(f1,buf1,rec1);

      real_reclen1:=real_reclen1+rec1;

      Label1.Caption:=FormatFloat('#,##',real_reclen1)+'/'+FormatFloat('#,##',reclen1);
      Label1.Caption:=Label1.Caption+'->'+inttostr(trunc((real_reclen1/reclen1)*100))+'%';
      application.ProcessMessages;



    end;

    closefile(f1);
    showmessage('ok');

    //發送get請求,以得到實際的文件數據_end;

    ClientSocket1.Active:=false;
    
  except
    closefile(f1);
    showmessage('discon...');
  end;


end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
var
  url1:string;  
begin
{  url1:='';

  url1:=url1+'GET http://clq.51.net/textfile.zip HTTP/1.1'+#13#10;
  url1:=url1+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'+#13#10;
  //應該可以不要url1:=url1+'Accept-Language: zh-cn'+#13#10;
  //應該可以不要url1:=url1+'Accept-Encoding: gzip, deflate'+#13#10;

  //不使用緩存,我附加的
  //與以前的服務器兼容
  url1:=url1+'Pragma: no-cache'+#13#10;
  //新的
  url1:=url1+'Cache-Control: no-cache'+#13#10;

  //不使用緩存,我附加的_end;

  url1:=url1+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)'+#13#10;
  //接受數據的范圍,可選
  url1:=url1+'RANGE: bytes=533200-'+#13#10;
  //下面這句必須要有
  url1:=url1+'Host: clq.51.net'+#13#10;
  url1:=url1+'Connection: Keep-Alive'+#13#10;
  url1:=url1+#13#10;
  ClientSocket1.Socket.SendText(url1);

 }
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
  ini1:tinifile;
begin
  ini1:=tinifile.Create(app_path1+'sys1.ini');
  ini1.WriteString('file1','host1',edit1.Text);

  ini1.Free;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  ini1:tinifile;
begin
  ini1:=tinifile.Create(app_path1+'sys1.ini');
  edit1.Text:=ini1.ReadString('file1','host1',edit1.Text);
  self.filename1:=ini1.ReadString('file1','filename1','c:\temp1.dat');
  edit2.Text:=self.filename1;
  //pos1:=filesize(
  ini1.Free;


end;

procedure TForm1.Edit2Change(Sender: TObject);
var
  ini1:tinifile;
begin
  ini1:=tinifile.Create(app_path1+'sys1.ini');
  ini1.WriteString('file1','filename1',edit2.Text);

  self.filename1:=edit2.Text;
  ini1.Free;

end;

procedure TForm1.Button3Click(Sender: TObject);
var
  url1:string;
  buf1:Tbuf_byte;
  rec1:longint;
  f1:file;

  cmd1:string; //這一行的內容
  reclen1,real_reclen1:longint; //服務器返回的長度;實際已經收到的長度
  value1:string; //標志們的值

begin
    self.stop1:=false;

    ClientSocket1.Active:=false;
    ClientSocket1.Host:=get_host1(edit1.Text);
    ClientSocket1.Port:=80;
    ClientSocket1.Active:=true;

    url1:='';

    self.serfilename:=get_file1(edit1.Text);
    self.serhost1:=get_host1(edit1.Text);
    //url1:=url1+'GET http://clq.51.net/textfile.zip HTTP/1.1'+#13#10;
    //url1:=url1+'GET /textfile.zip HTTP/1.1'+#13#10;
    url1:=url1+'GET /'+self.serfilename+' HTTP/1.1'+#13#10;
    //url1:=url1+'HEAD /'+self.serfilename+' HTTP/1.1'+#13#10;
    url1:=url1+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'+#13#10;
    //應該可以不要
    //url1:=url1+'Accept-Language: zh-cn'+#13#10;
    //應該可以不要
    //url1:=url1+'Accept-Encoding: gzip, deflate'+#13#10;

    //不使用緩存,我附加的
    //與以前的服務器兼容
    //url1:=url1+'Pragma: no-cache'+#13#10;
    //新的
    //url1:=url1+'Cache-Control: no-cache'+#13#10;

    //不使用緩存,我附加的_end;

    url1:=url1+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)'+#13#10;
    //接受數據的范圍,可選
    //url1:=url1+'RANGE: bytes=533200-'+#13#10;
    url1:=url1+'RANGE: bytes='+inttostr(533263)+'-533263'+#13#10;
    //下面這句必須要有
    //url1:=url1+'Host: clq.51.net'+#13#10;
    url1:=url1+'Host: '+self.serhost1+#13#10;
    //應該可以不要
    //url1:=url1+'Connection: Keep-Alive'+#13#10;
    url1:=url1+#13#10;
    ClientSocket1.Socket.SendText(url1);


    //while  ClientSocket1.Active=true do
    begin
      zeromemory(@buf1,sizeof(buf1));
      rec1:=ClientSocket1.Socket.ReceiveBuf(buf1,sizeof(buf1));

      real_reclen1:=real_reclen1+rec1;

      memo1.Lines.Add(strpas(@buf1));

      application.ProcessMessages;
      //if self.stop1=true then break;
    end;

    ClientSocket1.Active:=false;

    showmessage('ok');


end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  self.stop1:=true;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合激情| 亚洲欧美在线观看| 国产精品黄色在线观看| 亚洲高清在线视频| 国产大陆亚洲精品国产| 日韩一区二区三区av| 亚洲乱码中文字幕| 国产成人av电影在线| 欧美精品在线视频| 亚洲日本一区二区三区| 国产黄色成人av| 欧美不卡一二三| 日韩在线一区二区| 欧美色综合网站| 亚洲女同一区二区| 波多野结衣视频一区| www日韩大片| 日本在线不卡视频| 欧美精品日韩综合在线| 一区二区免费在线| 日本高清无吗v一区| 自拍偷拍亚洲综合| 99国产精品99久久久久久| 国产日韩欧美激情| 国产成人综合亚洲91猫咪| 日韩亚洲欧美在线| 九色porny丨国产精品| 欧美一区二区三区在线看| 天堂成人免费av电影一区| 欧美日韩综合在线免费观看| 成人免费一区二区三区在线观看| 丁香婷婷深情五月亚洲| 久久久久久久综合| 成人午夜碰碰视频| 国产精品视频你懂的| av在线这里只有精品| 国产精品国产自产拍在线| www.久久精品| 亚洲一二三四在线观看| 欧美视频一区二区三区四区| 亚洲电影激情视频网站| 91麻豆精品久久久久蜜臀| 另类小说视频一区二区| 精品va天堂亚洲国产| 成人在线综合网站| 中文字幕永久在线不卡| 色狠狠桃花综合| 天天影视色香欲综合网老头| 欧美大片一区二区| 风间由美一区二区三区在线观看 | 欧美视频在线观看一区| 性久久久久久久久久久久| 欧美一区三区四区| 成人综合在线网站| 一区二区三区四区不卡在线| 欧美精品色综合| 国产在线精品免费| 亚洲同性同志一二三专区| 欧美三级一区二区| 国产自产2019最新不卡| 自拍av一区二区三区| 精品视频123区在线观看| 男女激情视频一区| 中文字幕一区二区三区在线播放| 色婷婷国产精品久久包臀| 美脚の诱脚舐め脚责91| 中文字幕一区免费在线观看| 欧美日韩精品一区视频| 国产一区二区视频在线| 亚洲国产欧美在线| 久久久久亚洲蜜桃| 在线免费视频一区二区| 经典三级一区二区| 亚洲午夜一区二区| 国产日产精品1区| 7777精品久久久大香线蕉| 国产传媒久久文化传媒| 青草国产精品久久久久久| 国产婷婷色一区二区三区| 欧美精品日韩一区| 91丝袜呻吟高潮美腿白嫩在线观看| 免费高清在线视频一区·| 亚洲天堂网中文字| 26uuu国产在线精品一区二区| 欧洲av一区二区嗯嗯嗯啊| 国产成人精品影视| 日本午夜一本久久久综合| 亚洲男人天堂一区| 中文字幕+乱码+中文字幕一区| 在线不卡一区二区| 色噜噜久久综合| 成人a免费在线看| 狠狠久久亚洲欧美| 蜜臀av一区二区三区| 亚洲精品国产高清久久伦理二区| 国产精品素人视频| 久久婷婷成人综合色| 日韩欧美一二三区| 日韩亚洲欧美一区| 6080国产精品一区二区| 欧美性色欧美a在线播放| 色综合天天狠狠| jlzzjlzz欧美大全| 成人av网址在线观看| 国产91在线观看| 国产高清在线精品| 国产精品18久久久久| 国产综合色视频| 国产乱码精品一品二品| 国产在线播放一区| 国产丶欧美丶日本不卡视频| 国产成人综合在线播放| 国产91精品久久久久久久网曝门| 国产乱对白刺激视频不卡| 国产呦精品一区二区三区网站| 久久99国产精品免费| 国产在线精品一区二区| 国内精品嫩模私拍在线| 国产精品18久久久久| 国产成人精品免费一区二区| 国产精品99久久久久| 国产成人一级电影| 成人av在线播放网址| 99久久精品情趣| 欧美性大战久久久久久久蜜臀| 欧美在线不卡视频| 3atv一区二区三区| 精品少妇一区二区三区在线视频| 久久色中文字幕| 一区在线中文字幕| 亚洲免费av网站| 日本亚洲天堂网| 国内精品国产三级国产a久久| 懂色一区二区三区免费观看 | 国产精品三级电影| 国产精品动漫网站| 亚洲成av人片一区二区三区| 奇米亚洲午夜久久精品| 国产精品91xxx| 91国内精品野花午夜精品| 在线91免费看| 国产丝袜在线精品| 亚洲综合在线观看视频| 麻豆精品视频在线观看视频| 国产suv精品一区二区6| 欧美在线啊v一区| 26uuu精品一区二区三区四区在线| 国产精品热久久久久夜色精品三区 | 美女视频一区在线观看| 国产风韵犹存在线视精品| 色狠狠色狠狠综合| 欧美大片顶级少妇| 亚洲欧洲国产日韩| 日韩电影在线看| jlzzjlzz国产精品久久| 欧美一区二区三区免费大片| 中文字幕国产一区二区| 午夜伊人狠狠久久| 成人午夜在线播放| 日韩一区二区三区免费看| 亚洲天堂免费在线观看视频| 久久国内精品视频| 欧美性高清videossexo| 中文字幕免费不卡| 亚洲成年人网站在线观看| 成人免费毛片高清视频| 日韩午夜在线影院| 一区二区三区**美女毛片| 盗摄精品av一区二区三区| 日韩三级电影网址| 一区二区三区久久| 成人午夜电影久久影院| 日韩精品中文字幕一区二区三区| 亚洲色图欧美激情| 国产一区二区三区美女| 7777精品伊人久久久大香线蕉完整版 | 国产亚洲成aⅴ人片在线观看| 亚洲国产成人tv| 91免费视频观看| 国产精品久久久久久久岛一牛影视| 免费观看成人av| 欧美精品aⅴ在线视频| 亚洲精品老司机| 92国产精品观看| 国产精品色噜噜| 成人激情免费视频| 国产免费成人在线视频| 精品一区精品二区高清| 7777精品久久久大香线蕉| 亚洲午夜国产一区99re久久| 99vv1com这只有精品| 国产精品久久久久一区二区三区| 国产在线精品一区二区不卡了 | 色综合婷婷久久| 国产精品的网站| 91天堂素人约啪| 亚洲精品久久7777| 在线亚洲一区观看| 亚洲一区二区视频| 欧美美女bb生活片|