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

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

?? idmappedporttcp.pas

?? 絮語2007視頻聊天軟件源程序.僅供參考
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{ $HDR$}
{**********************************************************************}
{ Unit archived using Team Coherence                                   }
{ Team Coherence is Copyright 2002 by Quality Software Components      }
{                                                                      }
{ For further information / comments, visit our WEB site at            }
{ http://www.TeamCoherence.com                                         }
{**********************************************************************}
{}
{ $Log:  10247: IdMappedPortTCP.pas 
{
{   Rev 1.0    2002.11.12 10:45:12 PM  czhower
}
unit IdMappedPortTCP;
interface
{
2001-12-xx - Andrew P.Rybin
  -new architecture
2002-02-02 - Andrew P.Rybin
  -DoDisconnect fix
}
uses
  Classes,
  IdGlobal, IdTCPConnection, IdTCPServer, IdAssignedNumbers,
  SysUtils;

type
  TIdMappedPortThread = class (TIdPeerThread)
  protected
    FOutboundClient: TIdTCPConnection;//was TIdTCPClient
    FReadList: TList;
    FNetData: String; //data buf
    FConnectTimeOut: Integer;
    //
    procedure Cleanup; override; //Free OutboundClient
    procedure OutboundConnect; virtual;
  public
    constructor Create(ACreateSuspended: Boolean = True); override;
    destructor Destroy; override;
    //
    property  ConnectTimeOut: Integer read FConnectTimeOut write FConnectTimeOut default IdTimeoutDefault;
    property  NetData: String read FNetData write FNetData;
    property  OutboundClient: TIdTCPConnection read FOutboundClient write FOutboundClient;
    property  ReadList: TList read FReadList;
  End;//TIdMappedPortThread

  TIdMappedPortThreadEvent = procedure(AThread: TIdMappedPortThread) of object;
  TIdMappedPortOutboundConnectEvent = procedure(AThread: TIdMappedPortThread; AException: Exception) of object;//E=NIL-OK

  TIdMappedPortTCP = class(TIdTCPServer)
  protected
    FMappedHost: String;
    FMappedPort: Integer;

    //AThread.Connection.Server & AThread.OutboundClient
    FOnOutboundConnect: TIdMappedPortOutboundConnectEvent;
    FOnOutboundData: TIdMappedPortThreadEvent;
    FOnOutboundDisConnect: TIdMappedPortThreadEvent;
    //
    procedure DoConnect(AThread: TIdPeerThread); override;
    function  DoExecute(AThread: TIdPeerThread): boolean; override;
    procedure DoDisconnect(AThread: TIdPeerThread); override; //DoLocalClientDisconnect
    procedure DoLocalClientConnect(AThread: TIdMappedPortThread); virtual;
    procedure DoLocalClientData(AThread: TIdMappedPortThread); virtual;//APR: bServer

    procedure DoOutboundClientConnect(AThread: TIdMappedPortThread; const AException: Exception=NIL); virtual;
    procedure DoOutboundClientData(AThread: TIdMappedPortThread); virtual;
    procedure DoOutboundDisconnect(AThread: TIdMappedPortThread); virtual;

    function  GetOnConnect: TIdMappedPortThreadEvent;
    function  GetOnExecute: TIdMappedPortThreadEvent;
    procedure SetOnConnect(const Value: TIdMappedPortThreadEvent);
    procedure SetOnExecute(const Value: TIdMappedPortThreadEvent);
    function  GetOnDisconnect: TIdMappedPortThreadEvent;
    procedure SetOnDisconnect(const Value: TIdMappedPortThreadEvent);
    // try to hide
    property  OnBeforeCommandHandler;// NOT USED
    property  OnAfterCommandHandler;// NOT USED
    property  OnNoCommandHandler;// NOT USED
  public
    constructor Create(AOwner: TComponent); override;
  published
    property  MappedHost: String read FMappedHost write FMappedHost;
    property  MappedPort: Integer read FMappedPort write FMappedPort;
    //
    property  OnConnect: TIdMappedPortThreadEvent read GetOnConnect write SetOnConnect; //OnLocalClientConnect
    property  OnOutboundConnect: TIdMappedPortOutboundConnectEvent read FOnOutboundConnect write FOnOutboundConnect;

    property  OnExecute: TIdMappedPortThreadEvent read GetOnExecute write SetOnExecute;//OnLocalClientData
    property  OnOutboundData: TIdMappedPortThreadEvent read FOnOutboundData write FOnOutboundData;

    property  OnDisconnect: TIdMappedPortThreadEvent read GetOnDisconnect write SetOnDisconnect;//OnLocalClientDisconnect
    property  OnOutboundDisconnect: TIdMappedPortThreadEvent read FOnOutboundDisconnect write FOnOutboundDisconnect;
  End;//TIdMappedPortTCP

  //=============================================================================
  // * Telnet *
  //=============================================================================

  TIdMappedTelnetThread = class (TIdMappedPortThread)
  protected
    FAllowedConnectAttempts: Integer;
    //
    procedure OutboundConnect; override;
  public
    property  AllowedConnectAttempts: Integer read FAllowedConnectAttempts;
  End;//TIdMappedTelnetThread

  TIdMappedTelnetCheckHostPort = procedure (AThread: TIdMappedPortThread; const AHostPort: String; var VHost,VPort: String) of object;

  TIdCustomMappedTelnet = class (TIdMappedPortTCP)
  protected
    FAllowedConnectAttempts: Integer;
    FOnCheckHostPort: TIdMappedTelnetCheckHostPort;

    procedure DoCheckHostPort (AThread: TIdMappedPortThread; const AHostPort: String; var VHost,VPort: String); virtual;
    procedure SetAllowedConnectAttempts(const Value: Integer);
    procedure ExtractHostAndPortFromLine(AThread: TIdMappedPortThread; const AHostPort: String);
  public
    constructor Create(AOwner: TComponent); override;
    //
    property  AllowedConnectAttempts: Integer read FAllowedConnectAttempts write SetAllowedConnectAttempts default -1;
    //
    property  OnCheckHostPort: TIdMappedTelnetCheckHostPort read FOnCheckHostPort write FOnCheckHostPort;
  published
    property  DefaultPort default IdPORT_TELNET;
    property  MappedPort default IdPORT_TELNET;
  End;//TIdCustomMappedTelnet

  TIdMappedTelnet = class (TIdCustomMappedTelnet)
  published
    property  AllowedConnectAttempts: Integer read FAllowedConnectAttempts write SetAllowedConnectAttempts default -1;
    //
    property  OnCheckHostPort: TIdMappedTelnetCheckHostPort read FOnCheckHostPort write FOnCheckHostPort;
  End;//TIdMappedTelnet

  //=============================================================================
  // * P O P 3 *
  // USER username#host:port
  //=============================================================================

  TIdMappedPop3Thread = class (TIdMappedTelnetThread)
  protected
    procedure OutboundConnect; override;
  public
  End;//TIdMappedPop3Thread

  TIdMappedPop3 = class (TIdMappedTelnet)
  protected
    FUserHostDelimiter: String;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property  DefaultPort default IdPORT_POP3;
    property  MappedPort default IdPORT_POP3;
    property  UserHostDelimiter: String read FUserHostDelimiter write FUserHostDelimiter;
  End;//TIdMappedPop3

Implementation

uses
  IdStack, IdIOHandlerSocket, IdException, IdResourceStrings, IdTCPClient;

resourcestring
  RSEmptyHost = 'Host is empty';    {Do not Localize}
  RSPop3ProxyGreeting = 'POP3 proxy ready';    {Do not Localize}
  RSPop3UnknownCommand = 'command must be either USER or QUIT';    {Do not Localize}
  RSPop3QuitMsg = 'POP3 proxy signing off';    {Do not Localize}

constructor TIdMappedPortTCP.Create(AOwner: TComponent);
Begin
  inherited Create(AOwner);
  ThreadClass := TIdMappedPortThread;
End;//

procedure TIdMappedPortTCP.DoLocalClientConnect(AThread: TIdMappedPortThread);
Begin
  if Assigned(FOnConnect) then FOnConnect(AThread);
End;//

procedure TIdMappedPortTCP.DoOutboundClientConnect(AThread: TIdMappedPortThread; const AException: Exception=NIL);
Begin
  if Assigned(FOnOutboundConnect) then FOnOutboundConnect(AThread,AException);
End;//

procedure TIdMappedPortTCP.DoLocalClientData(AThread: TIdMappedPortThread);
Begin
  if Assigned(FOnExecute) then FOnExecute(AThread);
End;//

procedure TIdMappedPortTCP.DoOutboundClientData(AThread: TIdMappedPortThread);
Begin
  if Assigned(FOnOutboundData) then FOnOutboundData(AThread);
End;//

procedure TIdMappedPortTCP.DoDisconnect(AThread: TIdPeerThread);
Begin
  inherited DoDisconnect(AThread);
  if Assigned(TIdMappedPortThread(AThread).FOutboundClient) and
    TIdMappedPortThread(AThread).FOutboundClient.Connected
  then begin//check for loop
    TIdMappedPortThread(AThread).FOutboundClient.Disconnect;
  end;
End;//DoDisconnect

procedure TIdMappedPortTCP.DoOutboundDisconnect(AThread: TIdMappedPortThread);
Begin
  if Assigned(FOnOutboundDisconnect) then begin
    FOnOutboundDisconnect(AThread);
  end;
  AThread.Connection.Disconnect; //disconnect local
End;//


procedure TIdMappedPortTCP.DoConnect(AThread: TIdPeerThread);
begin
  //WARNING: Check TIdTCPServer.DoConnect and synchronize code. Don't call inherited!=> OnConnect in OutboundConnect    {Do not Localize}
  AThread.Connection.WriteRFCReply(Greeting); //was: inherited DoConnect(AThread);
  TIdMappedPortThread(AThread).OutboundConnect;
End;

function TIdMappedPortTCP.DoExecute(AThread: TIdPeerThread): boolean;
var
  LConnectionHandle: TObject;
  LOutBoundHandle: TObject;
begin
  Result:= TRUE;
  try
    LConnectionHandle:= TObject(
      (AThread.Connection.IOHandler as TIdIOHandlerSocket).Binding.Handle);
    LOutBoundHandle:= TObject(
      (TIdMappedPortThread(AThread).FOutboundClient.IOHandler as TIdIOHandlerSocket).Binding.Handle);
    with TIdMappedPortThread(AThread).FReadList do begin
      Clear;
      Add(LConnectionHandle);
      Add(LOutBoundHandle);

      if GStack.WSSelect(TIdMappedPortThread(AThread).FReadList, nil, nil, IdTimeoutInfinite) > 0 then begin
        //TODO: Make a select list that also has a function to check of handles
        if IndexOf(LConnectionHandle) > -1 then begin
          // TODO: WSAECONNRESET (Exception [EIdSocketError] Socket Error # 10054 Connection reset by peer)
          TIdMappedPortThread(AThread).FNetData := AThread.Connection.CurrentReadBuffer;
          if Length(TIdMappedPortThread(AThread).FNetData)>0 then begin
            DoLocalClientData(TIdMappedPortThread(AThread));//bServer
            TIdMappedPortThread(AThread).FOutboundClient.Write(TIdMappedPortThread(AThread).FNetData);
          end;//if
        end;
        if IndexOf(LOutBoundHandle) > -1 then begin
          TIdMappedPortThread(AThread).FNetData := TIdMappedPortThread(AThread).FOutboundClient.CurrentReadBuffer;
          if Length(TIdMappedPortThread(AThread).FNetData)>0 then begin
            DoOutboundClientData(TIdMappedPortThread(AThread));
            AThread.Connection.Write(TIdMappedPortThread(AThread).FNetData);
          end;//if
        end;
      end;//if select
    end;//with
  finally
    if NOT TIdMappedPortThread(AThread).FOutboundClient.Connected then begin
      DoOutboundDisconnect(TIdMappedPortThread(AThread)); //&Connection.Disconnect

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费在线观看视频一区| 26uuu国产在线精品一区二区| 成人黄色在线网站| 九九**精品视频免费播放| 另类人妖一区二区av| 九九久久精品视频| 国产成人av电影在线| 成人国产一区二区三区精品| av在线不卡电影| 91官网在线免费观看| 欧美三级电影在线看| 欧美日韩视频第一区| 日韩免费高清视频| 中文字幕精品一区二区三区精品 | 日本不卡不码高清免费观看| 香蕉成人啪国产精品视频综合网| 日本成人在线网站| 国产精品伊人色| 91视频免费观看| 欧美高清hd18日本| 久久这里只有精品6| 国产精品高潮久久久久无| 亚洲最快最全在线视频| 日韩精品乱码av一区二区| 国内国产精品久久| av一本久道久久综合久久鬼色| 91性感美女视频| 日韩一级高清毛片| 成人欧美一区二区三区| 亚洲mv在线观看| 国产成人av在线影院| 色老汉一区二区三区| 欧美电视剧在线观看完整版| 中文字幕在线观看不卡| 日韩精品亚洲一区| www.66久久| 精品国产伦理网| 亚洲理论在线观看| 国产在线一区观看| 欧美日韩电影一区| 国产精品成人免费在线| 青青草国产精品亚洲专区无| 成人app在线观看| 欧美tickling网站挠脚心| 一二三区精品视频| www.激情成人| 国产丝袜在线精品| 久久99久久久欧美国产| 欧美视频精品在线| 中文字幕日本乱码精品影院| 精品综合久久久久久8888| 欧美伊人久久久久久久久影院 | 正在播放一区二区| 亚洲视频一二三区| 国产成人精品午夜视频免费| 欧美一区二区在线看| 一区二区三区高清在线| www.久久久久久久久| 国产日韩欧美制服另类| 韩国欧美国产一区| 欧美一区二区不卡视频| 一区二区三区四区精品在线视频| 国产成人精品免费看| 久久久美女艺术照精彩视频福利播放| 日日摸夜夜添夜夜添精品视频| 99国产精品国产精品久久| 国产精品婷婷午夜在线观看| 精品一区二区三区香蕉蜜桃| 91精品国产综合久久久久久 | 日本不卡的三区四区五区| 欧美综合视频在线观看| 亚洲色图在线播放| 91麻豆蜜桃一区二区三区| 国产精品欧美一区二区三区| 国产91精品在线观看| 国产精品视频yy9299一区| 高清日韩电视剧大全免费| 国产精品久久久久一区二区三区| 国产成人精品一区二区三区四区| 久久精品视频在线看| 国产成人av一区| 亚洲视频在线一区| 欧美私模裸体表演在线观看| 亚洲国产视频直播| 91精品婷婷国产综合久久竹菊| 老司机一区二区| 久久久久久免费网| 91在线观看一区二区| 一区二区三区四区在线免费观看| 欧美日韩一区久久| 老司机免费视频一区二区| 久久免费国产精品| 97久久精品人人爽人人爽蜜臀 | 欧美一级精品在线| 韩国精品久久久| 国产精品福利电影一区二区三区四区| 成人国产视频在线观看| 亚洲综合精品久久| 欧美电影精品一区二区| 成人午夜电影久久影院| 亚洲综合激情网| 精品日韩在线观看| 成人h版在线观看| 性做久久久久久久免费看| 欧美电影免费观看高清完整版| 成人丝袜视频网| 亚洲国产精品影院| 国产午夜精品一区二区三区嫩草 | 奇米影视在线99精品| 中文字幕精品三区| 欧美日韩国产综合一区二区| 久久99精品视频| 一区二区三区四区激情| 国产亚洲精品aa午夜观看| 91福利资源站| 成人h版在线观看| 午夜精品一区二区三区免费视频| 久久嫩草精品久久久久| 欧美性xxxxxxxx| 成人丝袜高跟foot| 久久国产精品区| 一区二区三区欧美视频| 久久精品视频在线看| 欧美一区二区在线免费观看| 91伊人久久大香线蕉| 国模少妇一区二区三区| 亚洲国产精品久久一线不卡| 中文字幕欧美日本乱码一线二线| 欧美一级在线观看| 欧美性大战久久久久久久蜜臀| 粉嫩蜜臀av国产精品网站| 奇米影视7777精品一区二区| 亚洲精品久久嫩草网站秘色| 国产精品欧美经典| 久久久蜜桃精品| 日韩精品最新网址| 91精品国产入口在线| 欧美性生活一区| 色综合久久久久| 成人免费视频视频| 国产精品一区一区三区| 青青草97国产精品免费观看 | 国产91丝袜在线播放| 久久99精品国产.久久久久久| 亚洲国产成人av好男人在线观看| 亚洲少妇中出一区| 最新日韩av在线| 亚洲乱码日产精品bd| 亚洲欧美色综合| 亚洲女同ⅹxx女同tv| 国产精品久久久久9999吃药| 国产欧美一区二区精品婷婷| 国产欧美日韩另类一区| 国产欧美一区二区精品秋霞影院| 久久久久久免费毛片精品| 久久久精品国产免费观看同学| 欧美va在线播放| 国产日韩欧美麻豆| 久久综合久久鬼色| 国产女人水真多18毛片18精品视频| 亚洲精品在线免费播放| 国产婷婷一区二区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲三级在线看| 亚洲国产精品一区二区久久恐怖片| 亚洲成a人片综合在线| 日本网站在线观看一区二区三区| 美洲天堂一区二卡三卡四卡视频| 久久国产精品无码网站| 久久激情五月激情| 国产99久久久国产精品| 一本到一区二区三区| 欧美老人xxxx18| 精品国产91乱码一区二区三区| 国产欧美一区二区三区在线老狼| 亚洲欧洲日韩综合一区二区| 亚洲第一av色| 国产乱码精品一区二区三区av| av中文一区二区三区| 欧美日韩国产成人在线免费| 日韩欧美在线影院| 日本一区二区三区高清不卡 | 午夜精品福利一区二区蜜股av| 日韩高清不卡在线| 高清免费成人av| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 在线亚洲高清视频| 日韩欧美亚洲国产另类| 久久久久久一级片| 午夜激情久久久| 成人午夜免费视频| 91精品国产综合久久婷婷香蕉 | 蜜臀av一区二区三区| 国产成人免费在线观看| 欧美日韩国产一区| 中文字幕av一区二区三区免费看 | 五月婷婷综合激情| 成人深夜在线观看| 欧美精品一区二区久久婷婷| 亚洲精品一二三|