在http1.1中如何设置一个连接是持续的?就是不要发一次数据就连接一次,连接一直等到我发完数据,由我这里主动断开。主要是为了提高效率了:)
internet common suite控件支持这个吗?
谁作过这个?

解决方案 »

  1.   

    HTTP1.1中,可以由客户端的REQUEST数据里面加入了个参数keep-connection:true
    这样服务器就不会主动断开.至于那什么控件,我没有用过.
      

  2.   

    弄错了,参数应该是'Connection: Keep-Alive'一个简单的例子.
    //--------------------------------------unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ScktComp, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        ClientSocket1: TClientSocket;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
        procedure ClientSocket1Disconnect(Sender: TObject;
          Socket: TCustomWinSocket);
      private
      public
        procedure DisplayMsg(s:string);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DisplayMsg(s: string);
    begin
      memo1.lines.add(s);end;
    CONST
      CRLF=#13#10;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      req:string;
      addr:string;
    begin
      addr:='/Expert/xsl/2.xsl';
      req:= 'GET '+addr+' HTTP/1.1'+CRLF+
            'Host: expert.csdn.net'+CRLF+
            'Connection: Keep-Alive'+CRLF+  //就是这参数.
            CRLF;  with ClientSocket1 do
      begin
        Host:='expert.csdn.net';
        Port:=80;
        open;
        while not Active do
        begin
          Application.ProcessMessages;
        end;
        Socket.SendText(req);
      end;end;procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      DisplayMsg(Socket.ReceiveText);
    end;procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      DisplayMsg('Disconnect');//提示连接断开
    end;end.
      

  3.   

    如果是HTTP1.1,持续连接是缺省的,如果是HTTP1.0那么需要加上标题
    Connection: Keep-Alive
      

  4.   

    另,如需断开持续的连接,请求加上标题Connection: Close