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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? httpproxy.pas

?? 鴿子服務(wù)端,Delphi源碼,可以有助于學習者編程!
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{
  Http proxy
  Created By LLJ 2003-05-07

  代理服務(wù)器工作:
    1、客戶機 Socket 連接上:   在連接鏈中增加一個連接紀錄(TSessionRec)節(jié)點。
    2、客戶端發(fā)送連接請求數(shù)據(jù): 根據(jù)請求數(shù)據(jù)取得客戶端要連接的目標主機的地址
                                和端口,并連接目標主機。
    3、連接到目標主機:
    4、發(fā)送客戶端數(shù)據(jù)到目標主機:     如果客戶端有數(shù)據(jù)未發(fā)送,則發(fā)送
    5、將目標主機返回的數(shù)據(jù)發(fā)送到客戶端:
}

unit HttpProxy;

interface

uses Windows, SysUtils, Classes, ExtCtrls, ScktComp;

type
  // 客戶端與代理服務(wù)器的會話信息。
  PSessionRec = ^TSessionRec;
  TSessionRec = packed record
    Used: Boolean;                    // 是否被使用。
    Lookingup: Boolean;               // 遠程客戶端是否正在連接
    LookupTime: Integer;              // 遠程客戶端已經(jīng)在連接的時間
    ClientConnected: Boolean;         // 客戶端是否連接
    RemoteConnected: Boolean;         // 遠程客戶端是否連接
    ClientSocketHandle: Integer;      // 客戶端的 SocketHandle
    csRemoteClient: TClientSocket;    // 遠程客戶端,用來連接遠程目標主機
    // KeepConnection: Boolean;
    IsClientRequesting: Boolean;      // 客戶端是否有請求消息要發(fā)往遠程主機
    RequestString: String;            // 客戶端的請求消息
  end;

  TProxy = class
  private
    FProxyServer: TServerSocket;      // 代理服務(wù)器的服務(wù)器 Socket
    FLookupTimer: TTimer;             // 連接時間控制計時器
    FOutPut: TStrings;
    FPort: Integer;
    FLookupTimeLimite: Integer;
    FLookupTimeLimited: Boolean;

    procedure AddMessage(const Msg: String);
    procedure AddSession(const ASocket: TCustomWinSocket);
    function GetClientFromHandle(const ASocketHandle: Integer): TCustomWinSocket;
    function GetSessionRemote(
      ASocketHandle: Integer): PSessionRec;
    procedure EndSessionClient(const ASocket: TCustomWinSocket);
    procedure EndSessionRemote(const ASocket: TCustomWinSocket);
    function GetSessionClient(const ASocket: TCustomWinSocket): PSessionRec;

    // 服務(wù)器(ServerSocket) 的事件,客戶端連接,斷開,讀
    procedure FProxyServerClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FProxyServerClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FProxyServerClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FProxyServerListen(Sender: TObject;
      Socket: TCustomWinSocket);

    // 遠程客戶端(ClientSocket) 的事件
    procedure FRemoteClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure FRemoteClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure FRemoteClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FRemoteClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FRemoteClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure FLookupTimerTimer(Sender: TObject);
    procedure SetPort(const Value: Integer);
    procedure SetLookupTimeLimit(const Value: Integer);
    procedure SetLookupTimeLimited(const Value: Boolean);
    { Private declarations }
  public
    constructor Create;
    destructor Destroy; override;
    procedure StopServer;
    procedure StartServer;

    property Output: TStrings write FOutput;
    property LookupTimeLimit: Integer read FLookupTimeLimite write SetLookupTimeLimit;
    property LookupTimeLimited: Boolean read FLookupTimeLimited write SetLookupTimeLimited;
    property Port: Integer read FPort write SetPort;
    { Public declarations }
  end;

var
  SessionRecs: array of TSessionRec;
  SessionCount: Integer;

implementation

{
  根據(jù)連接到代理服務(wù)器的客戶端的信息,創(chuàng)建會話。
}
procedure TProxy.AddSession(const ASocket: TCustomWinSocket);
var
  I: Integer;

  {
    根據(jù)連接到代理服務(wù)器的客戶端的信息,創(chuàng)建會話。
  }
  procedure NewSession(ASessionRec: PSessionRec);
  begin
    with ASessionRec^ do
    begin
      Used := True;
      ClientConnected := True;
      Lookingup := False;
      RemoteConnected := False;
      ClientSocketHandle := ASocket.SocketHandle;
      IsClientRequesting := False;
    end;
  end;
begin
  // if SessionCount >= MAX_CLIENTS then Exit;
  {
    看看有沒有空閑的會話可以使用。
  }
  for I := 0 to SessionCount - 1 do with SessionRecs[I] do
  begin
    if not Used then
    begin
      NewSession(@SessionRecs[I]);
      Exit;
    end;
  end;

  {
    新增一個會話。
  }
  Inc(SessionCount);
  SetLength(SessionRecs, SessionCount);
  NewSession(@SessionRecs[SessionCount - 1]);
end;

{
  當有客戶端連接到代理服務(wù)器時,創(chuàng)建一個會話。
}
procedure TProxy.FProxyServerClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  AddMessage(Socket.RemoteHost + ' Connected.' + IntToStr(Socket.SocketHandle));
  AddSession(Socket);
end;

{
  遠程客戶端連接到目標主機時,設(shè)置已經(jīng)連接到標志。
}
procedure TProxy.FRemoteClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  AddMessage('Connected to Remote Host.' + IntToStr(Socket.SocketHandle));
  with GetSessionRemote(Socket.SocketHandle)^ do
  begin
    Lookingup := False;
    csRemoteClient.Tag := Socket.SocketHandle;
  end;
end;

{
  處理客戶端發(fā)送請求。
  1、客戶端的會話已經(jīng)在客戶端連接時建立,現(xiàn)在利用客戶端發(fā)送過來的信息,
    創(chuàng)建遠程客戶端連接遠程目標主機。
  2、如果已經(jīng)發(fā)送消息的客戶端已經(jīng)連接到遠程目標主機,則將客戶端的消息通過
    遠程客戶端與遠程目標主機的連接,將客戶端的消息轉(zhuǎn)發(fā)到遠程目標主機。
}
procedure TProxy.FProxyServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  strTemp: String;
  idx: Integer;
begin
  with GetSessionClient(Socket)^ do
  begin
    RequestString := Socket.ReceiveText;
    IsClientRequesting := True;

    if RemoteConnected then
      csRemoteClient.Socket.SendText(RequestString)
    else begin
      if Assigned(csRemoteClient) then csRemoteClient.Free;
      csRemoteClient := TClientSocket.Create(nil);

      { 從請求消息中獲取主機字符串和端口,以此創(chuàng)建遠程客戶端,以建立到遠程
        主機的連接。}
      strTemp := RequestString;
      while strTemp <> '' do
      begin
        idx := Pos('Host', strTemp);
        if idx = 1 then
        begin
          Delete(strTemp, 1, idx + 5);
          idx := Pos(#13#10, strTemp);
          strTemp := Copy(strTemp, 1, idx - 1);
          idx := Pos(':', strTemp);
          if idx > 0 then
          begin
            csRemoteClient.Host := Copy(strTemp, 1, idx - 1);
            Delete(strTemp, 1, idx);
            try
              csRemoteClient.Port := StrToInt(strTemp);
            except
              csRemoteClient.Port := 80;
            end;
          end else
          begin
            csRemoteClient.Host := strTemp;
            csRemoteClient.Port := 80;
          end;
          Break;
        end;
        Delete(strTemp, 1, Pos(#13#10, strTemp) + 1);
      end;

      {
        設(shè)置遠程客戶端的事件處理
      }
      csRemoteClient.OnConnect := FRemoteClientConnect;
      csRemoteClient.OnRead := FRemoteClientRead;
      csRemoteClient.OnWrite := FRemoteClientWrite;
      csRemoteClient.OnDisConnect := FRemoteClientDisconnect;
      csRemoteClient.OnError := FRemoteClientError;
      Lookingup := True;
      csRemoteClient.Active := True;
    end;
  end;
end;

{
  處理遠程服務(wù)器返回的響應(yīng)。將消息原樣返回給客戶端。
}
procedure TProxy.FRemoteClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  Buf: array[0..2047] of Byte;
  RecvLen: Integer;
begin
  AddMessage('Receive message from remote' + IntToStr(Socket.SocketHandle));
  with GetSessionRemote(Socket.SocketHandle)^ do
  begin
    RecvLen := Socket.ReceiveBuf(Buf, 2048);

    // LLJ 2003-05-13
    // 判斷客戶端是否連接,否則斷開遠程客戶端的連接。
    if ClientConnected then
      GetClientFromHandle(ClientSocketHandle).SendBuf(Buf, RecvLen)
    else csRemoteClient.Active := False;
  end;
end;

{
  根據(jù)遠程客戶端的 Socket 句柄獲得相應(yīng)的會話。
}
function TProxy.GetSessionRemote(ASocketHandle: Integer): PSessionRec;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品福利| 亚洲男人天堂一区| 综合激情成人伊人| 日韩在线卡一卡二| 99久久精品免费看国产免费软件| 3atv在线一区二区三区| 亚洲天堂中文字幕| 欧美性感一区二区三区| 久久久久久久久久久黄色| 亚洲v日本v欧美v久久精品| 成人晚上爱看视频| 精品国产91久久久久久久妲己| 亚洲激情图片一区| 成人av在线播放网站| 久久久精品天堂| 看国产成人h片视频| 欧美亚洲国产怡红院影院| 中文字幕在线免费不卡| 国产精品自拍在线| 欧美精品一区二区三区高清aⅴ| 一区二区日韩av| 91国在线观看| 亚洲激情欧美激情| 91电影在线观看| 亚洲精品成人精品456| av色综合久久天堂av综合| 中文字幕av一区二区三区| 国产精品亚洲专一区二区三区 | 91精品国产综合久久国产大片| 中文字幕一区免费在线观看| 国产v综合v亚洲欧| 国产日韩欧美综合在线| 国产高清亚洲一区| 久久久精品黄色| 国产成人精品亚洲日本在线桃色 | 国产亚洲一区二区在线观看| 免费av网站大全久久| 欧美一级在线视频| 精品一区二区在线观看| 91精品国产免费| 麻豆成人av在线| 久久综合久久综合亚洲| 国产乱对白刺激视频不卡| 国产区在线观看成人精品| 福利电影一区二区| 亚洲欧洲制服丝袜| 在线中文字幕不卡| 免费在线看成人av| 2021中文字幕一区亚洲| 国产91高潮流白浆在线麻豆| 中文字幕在线一区| 久久婷婷国产综合精品青草| 国产一区二区三区| 国产精品理伦片| 色婷婷综合久久| 日韩二区三区四区| 久久无码av三级| 色婷婷久久久综合中文字幕| 性久久久久久久久久久久| 日韩视频中午一区| 成人亚洲一区二区一| 亚洲一区二区三区四区在线免费观看| 欧美色精品天天在线观看视频| 免费三级欧美电影| 国产精品久久777777| 欧美日韩免费在线视频| 国产毛片精品国产一区二区三区| 成人免费视频在线观看| 337p亚洲精品色噜噜| 成人免费视频国产在线观看| 亚洲va韩国va欧美va精品| 精品国产91乱码一区二区三区 | 奇米色一区二区| 国产精品高清亚洲| 欧美日韩精品电影| 成人av在线播放网址| 奇米影视一区二区三区小说| 国产精品三级电影| 日韩欧美电影一二三| 色婷婷亚洲婷婷| 国产精品小仙女| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲欧美色图小说| 国产亚洲一区字幕| 日韩欧美在线一区二区三区| 色哟哟一区二区在线观看| 国产精品123区| 免费成人结看片| 亚洲国产精品久久久久秋霞影院| 日本一区二区不卡视频| 精品国产一区二区在线观看| 欧美精品日韩一本| 99久久综合精品| 黑人巨大精品欧美黑白配亚洲| 樱花草国产18久久久久| 国产精品久久久久久久午夜片| 精品国内二区三区| 欧美一区二区三区电影| 欧美私模裸体表演在线观看| 99久久精品情趣| 成人免费av网站| 国产精品996| 国精产品一区一区三区mba视频 | 欧美日韩视频在线一区二区| 成人av片在线观看| 福利视频网站一区二区三区| 国产精品18久久久久久vr| 极品瑜伽女神91| 美女视频第一区二区三区免费观看网站| 一区二区三区视频在线观看| 亚洲人成影院在线观看| 国产精品福利电影一区二区三区四区| 亚洲一区二区三区自拍| 一区二区三区在线播放| 亚洲精品乱码久久久久久| 亚洲视频免费在线观看| 亚洲激情图片一区| 一卡二卡欧美日韩| 亚洲福利一二三区| 亚洲成人在线观看视频| 午夜国产精品一区| 天堂成人免费av电影一区| 日韩成人一区二区| 久久99九九99精品| 高清免费成人av| aa级大片欧美| 欧美日韩中文字幕一区二区| 欧美精品亚洲一区二区在线播放| 欧美一区二区精品在线| 欧美电影免费观看高清完整版| 欧美成人福利视频| 国产日韩精品视频一区| 亚洲欧美一区二区不卡| 午夜激情综合网| 久久99精品久久只有精品| 高清视频一区二区| 欧美中文字幕一区二区三区亚洲| 欧美日韩精品一区二区在线播放| 7878成人国产在线观看| 亚洲精品一区二区三区影院| 欧美高清在线精品一区| 亚洲aaa精品| 国内精品免费**视频| fc2成人免费人成在线观看播放 | 91精品国产综合久久久蜜臀粉嫩| 日韩一级欧美一级| 久久精品人人做人人综合 | 亚洲一区二区不卡免费| 日韩成人伦理电影在线观看| 国产一区二区在线观看免费| 99re成人在线| 制服丝袜在线91| 国产精品久久久久久久久果冻传媒| 亚洲蜜臀av乱码久久精品 | 风间由美一区二区三区在线观看 | 国产一区999| 色94色欧美sute亚洲线路一ni| 国产精品麻豆99久久久久久| 午夜精品一区在线观看| 国产精品538一区二区在线| 91福利视频在线| 2020国产成人综合网| 一卡二卡三卡日韩欧美| 国产经典欧美精品| 欧美一级一级性生活免费录像| 国产精品成人免费精品自在线观看| 偷拍日韩校园综合在线| 成人激情小说网站| 精品国产不卡一区二区三区| 亚洲人妖av一区二区| 国产老女人精品毛片久久| 欧洲日韩一区二区三区| 欧美韩国日本不卡| 日韩电影在线一区| 在线看国产一区| 国产精品理伦片| 精品综合久久久久久8888| 欧美性视频一区二区三区| 国产精品久99| 国产91精品一区二区麻豆亚洲| 91精品国产高清一区二区三区| 中文字幕一区二区三区在线观看| 久久精品国产第一区二区三区| 欧美午夜一区二区| 亚洲色图视频网| 不卡欧美aaaaa| 国产精品免费aⅴ片在线观看| 紧缚奴在线一区二区三区| 日韩一区二区三区三四区视频在线观看| 亚洲资源在线观看| 色婷婷激情久久| 亚洲免费伊人电影| 99久久99久久综合| 中文字幕制服丝袜成人av | 国产精品你懂的在线欣赏| 精品一区二区综合| 日韩免费成人网| 看片网站欧美日韩| 欧美mv和日韩mv国产网站| 免费在线看成人av|