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

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

?? icqsock.pas

?? 本程序是轉(zhuǎn)載的
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
unit ICQSock;
{(C) Alex Demchenko}
{ Modified by NighTrader 02-04-2003 }

//{$DEFINE DEBUG} {Show debug errors}
//{$DEFINE PARSE} {Dump packets into file}

interface
uses
{$IFDEF DEBUGDC}
  dbugintf, Dialogs,
{$ENDIF}
  Windows, WinSock, Classes, ICQWorks, ICQLang, Sysutils;

const
  CNetPktLen = $FFFF; {Size of network packet}
  DefaultSockType = True; {True = non-blocking using blocking sockets architecture; False = blocking}

type
  PNetPacket = ^TNetPacket;
  TNetPacket = record
    Buf: array[0..CNetPktLen - 1] of Byte;
    BufLen: Word;
    Offset: Word;
    Next: PNetPacket;
  end;

  {Thread-safe implementation of software buffer}
  TNetBuffer = class(TObject)
  private
    FPkt: PNetPacket;
    Shared: Integer;
    CS: TRTLCriticalSection;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Enter;
    procedure Leave;
    procedure Clear;
    procedure AddPacket(Buffer: Pointer; BufLen: LongWord);
    procedure DelPacket;
    function GetPacket(Buffer: Pointer): LongWord;
    function SkipData(Len: Word): Boolean;
    procedure AddStr(const Value: String);
    function GetStr: String;
    function GetLength: LongWord;
  end;

  {Thread-safe implementation of Berkeley sockets}
  TCustomSocket = class(TThread)
  private
    FSocket: TSocket;
    FIp: Integer;
    FDoConnect: Boolean;
    FWorking: Boolean;
    FConnected: Boolean;
    FAssync: Boolean;
    FBuffer: TNetBuffer;
    FDataSentEvent: Boolean;
    FErrLang: TICQLangType;
    procedure ProcessBuffer;
  protected
    FHost: String;
    FPort: Word;
    FLastError: Word;
    FLastErrMsg: String;
    Buffer: Pointer;
    BufLen: LongWord;
    function Resolve(const Host: String): Integer;
    procedure Execute; override;
    procedure FreeSocket;
    procedure OnError; virtual;
    procedure OnConnect; virtual;
    procedure OnConnectError; virtual;
    procedure OnDisconnect; virtual;
    procedure OnReceive; virtual;
    procedure OnDataSent; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    procedure StartWork(Socket: TSocket);
    procedure Connect;
    procedure SendData(Buffer: Pointer; Len: LongWord);
    procedure SendStr(const Value: String);
    property Host: String read FHost write FHost;
    property Port: Word read FPort write FPort;
    property Working: Boolean read FWorking write FWorking;
    property Connected: Boolean read FConnected write FConnected;
    property Assync: Boolean read FAssync write FAssync;
    property ErrorLanguage: TICQLangType read FErrLang write FErrLang;
  end;

  TProxySocket = class(TCustomSocket)
  private
    FDestHost: String;
    FDestIp: Integer;
    FDestPort: Word;
    FProxyUser: String;
    FProxyPass: String;
    FProxyAuth: Boolean;
    FProxyReady: Boolean;
    FProxyResolve: Boolean;
  protected
    procedure Execute; override;
  public
    property Host: String read FDestHost write FDestHost; {Real Host}
    property Port: Word read FDestPort write FDestPort;   {Real Port}

    property ProxyHost: String read FHost write FHost;
    property ProxyPort: Word read FPort write FPort;
    property ProxyUser: String read FProxyUser write FProxyUser;
    property ProxyPass: String read FProxyPass write FProxyPass;
    property ProxyAuth: Boolean read FProxyAuth write FProxyAuth default False;
    property ProxyResolve: Boolean read FProxyResolve write FProxyResolve default False;

    property ProxyReady: Boolean read FProxyReady write FProxyReady default False;
  end;

  TOnError = procedure(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String) of object;
  TOnRecveive = procedure(Sender: TObject; Buffer: Pointer; BufLen: LongWord) of object;

  {Extends TProxySocket with events}
  TEventSocket = class(TProxySocket)
  private
    FOnConnect: TNotifyEvent;
    FOnError: TOnError;
    FOnDisconnect: TNotifyEvent;
    FOnConnectError: TNotifyEvent;
    FOnReceive: TOnRecveive;
    FOnDataSent: TNotifyEvent;
  protected
    procedure OnConnect; override;
    procedure OnError; override;
    procedure OnConnectError; override;
    procedure OnDisconnect; override;
    procedure OnReceive; override;
    procedure OnDataSent; override;
  published
    property _OnConnect: TNotifyEvent read FOnConnect write FOnConnect;
    property _OnError: TOnError read FOnError write FOnError;
    property _OnConnectError: TNotifyEvent read FOnConnectError write FOnConnectError;
    property _OnDisconnect: TNotifyEvent read FOnDisconnect write FOnDisconnect;
    property _OnReceive: TOnRecveive read FOnReceive write FOnReceive;
    property _OnDataSent: TNotifyEvent read FOnDataSent write FOnDataSent;
  end;

  TSOCKSSocket = class(TEventSocket)
  private
    FSrcBuf: array[0..255] of Byte;
    FSrcLen: Word;
  end;

  TSOCKS4Socket = class(TSOCKSSocket)
  protected
    procedure OnConnect; override;
    procedure OnReceive; override;
  end;

  TSOCKS5Socket = class(TSOCKSSocket)
  private
    FSocksProgress: Word;
  protected
    procedure OnConnect; override;
    procedure OnReceive; override;
  end;

  THTTPSocket = class(TEventSocket)
  private
    FBuf: array[0..$FFFE] of Byte;
    FCurLen, FLen: LongWord;
  protected
    procedure OnConnect; override;
    procedure OnReceive; override;
  end;

  THTTPSSocket = class(TEventSocket)
  private
    FBuf: array[0..8191] of Byte;
    FCurLen: Word;
  protected
    procedure OnConnect; override;
    procedure OnReceive; override;
  end;

  TMySocket = class;
  TOnClientConnected = procedure(Sender: TObject; Socket: TMySocket) of object;
  TOnSrvSockConnected = procedure(Sender: TObject; Socket: TSocket) of object;

  TTCPServer = class(TThread)
  private
    FSocket: TSocket;
    FPort: Word;
    FClient: TSocket;
    FLastError: Word;
    FLastErrMsg: String;
    FErrLang: TICQLangType;
    FOnError: TOnError;
    FOnClientConnected: TOnSrvSockConnected;
  protected
    procedure Execute; override;
    procedure WaitForConnection;
    procedure FreeSocket;
  public
    constructor Create;
    destructor Destroy; override;

    function Start: Boolean;
    procedure OnError; virtual;
    procedure OnClientConnected; 
    property Port: Word read FPort write FPort;
    property ErrorLanguage: TICQLangType read FErrLang write FErrLang;
    property _OnError: TOnError read FOnError write FOnError;
    property _OnClientConnected: TOnSrvSockConnected read FOnClientConnected write FOnClientConnected;
  end;

  TOnAdvPktParse = procedure(Sender: TObject; Buffer: Pointer; BufLen: LongWord; Incoming: Boolean) of object;
  TOnRecv = procedure(Sender: TObject; Socket: TSocket; Buffer: Pointer; BufLen: LongWord) of object;

  TServerSocket = class(TTCPServer)
    private
      fOnCliConn:TOnSrvSockConnected;
      procedure DoConnEvent;
    public

      procedure OnClientConnected; virtual;
      property OnConnected: TOnSrvSockConnected read fOnCliConn write fOnCliConn;
    End;

  { TSrvSock like in MyScoket.pas }
  TSrvSocket = class(TObject)
    private
      fSrv:TTCPServer;
      fPort:word;
      FOnClientConnected: TOnClientConnected;
      FOnError:TOnError;
      fIsListening:Boolean;

      procedure OnSrvConnProc(Sender: TObject; Socket: TSocket);
      procedure OnSrvErrProc(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String);
      function GetPort:Word;
      procedure SetPort( aPort: Word);
    Public
      constructor Create;
      destructor Destroy; override;
      function StartServer(Port: Word): Boolean;
      function StopServer: Boolean;
      property Port: Word read GetPort write SetPort;
    published
      property OnError:TOnError read fOnError write fOnError;
      property OnClientConnected: TOnClientConnected read FOnClientConnected write FOnClientConnected;
  End;

  { TMySock like in MySocket.pas }
  TMySocket = class(TObject)
    private
      FHost:String;
      fPort:Word;
      // Threaded Socket
      FEventSocket:TEventSocket;
      FSocket:TSocket;
      //  Events
      FOnConnectError: TNotifyEvent;
      FOnDisconnect: TNotifyEvent;
      FOnPktParse: TOnAdvPktParse;
      FOnError: TOnError;
      FOnRecv: TOnRecv;
      FOnConnectProc: TNotifyEvent;
      FOnDataSent: TNotifyEvent;

      function GetClientSocket: TSocket;
      procedure SetClientSocket(Socket: TSocket);
      function IsConnected: Boolean;

      Procedure SetHost( aHost: String);
      Procedure SetPort( aPort: Word);
      Function  GetHost: String;
      Function  GetPort: Word;
      Procedure SetProxyType( aProxyType: TProxyType);
      Procedure SetProxyHost( aProxyHost: String);
      Procedure SetProxyPort( aProxyPort: Word);
      Procedure SetProxyAuth( aProxyAuth: Boolean);
      Procedure SetProxyPass( aProxyPass: String);
      Procedure SetProxyUser( aProxyUser: String);
      Procedure SetProxyRslv( aProxyRslv: Boolean);
      Function  GetProxyType: TProxyType;
      Function  GetProxyHost: String;
      Function  GetProxyPort: Word;
      Function  GetProxyAuth: Boolean;
      Function  GetProxyPass: String;
      Function  GetProxyUser: String;
      Function  GetProxyRslv: Boolean;

      Procedure OnConnectErrorProc(Sender: TObject);
      Procedure OnDisconnectProc(Sender: TObject);
      Procedure OnConnect(Sender: TObject);
      Procedure OnErrorProc(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String);
      Procedure OnReceive(Sender: TObject; Buffer: Pointer; BufLen: LongWord);
      Procedure OnDataSentProc(Sender: TObject);
    public
      constructor Create;
      destructor Destroy; override;
      procedure Connect; dynamic;
      procedure Disconnect;
      procedure SendData(var Buf; BufLen: LongWord);
      property Host: String read fHost write fHost;
      property Port: Word read fPort write fPort;
      property ProxyType: TProxyType read GetProxyType write SetProxyType;
      property ProxyHost: String read GetProxyHost write SetProxyHost;
      property ProxyPort: Word read GetProxyPort write SetProxyPort;
      property ProxyUser: String read GetProxyUser write SetProxyUser;
      property ProxyAuth: Boolean read GetProxyAuth write SetProxyAuth;
      property ProxyPass: String read GetProxyPass write SetProxyPass;
      property ProxyResolve: Boolean read GetProxyRslv write SetProxyRslv default False;
//      property WndHandle: THandle read GetWndHandle;
    published
      property OnConnectError: TNotifyEvent read FOnConnectError write FOnConnectError;
      property OnDisconnect: TNotifyEvent read FOnDisconnect write FOnDisconnect;
      property OnPktParseA: TOnAdvPktParse read FOnPktParse write FOnPktParse;
      property OnError: TOnError read FOnError write FOnError;
      property OnReceiveProc: TOnRecv read FOnRecv write FOnRecv;
      property OnConnectProc: TNotifyEvent read FOnConnectProc write FOnConnectProc;
      property OnDataSent: TNotifyEvent read FOnDataSent write FOnDataSent;
      property ClientSocket: TSocket read GetClientSocket write SetClientSocket;
      property Connected: Boolean read IsConnected;
  End;

var
  WSAData: TWSAData;
  WSAStarted: Boolean;

function WaitForRead(Sock: TSocket; Timeout: DWord): Boolean;
function GetHTTPStatus(List: TStringList): String;

function WSockAddrToIp(Value: LongWord): String;
function WSAErrorToStr(ErrorNo: Integer): String;
function GetLocalIP: Integer;
function FindBindPort: Word;



implementation

const
  b64alphabet: PChar = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

function EncodeBase64(Value: String): String;
const
  pad: PChar = '====';

  function EncodeChunk(const Chunk: String): String;
  var
    W: LongWord;
    i, n: Byte;
  begin
    n := Length(Chunk); W := 0;
    for i := 0 to n - 1 do
      W := W + Ord(Chunk[i + 1]) shl ((2 - i) * 8);
    Result := b64alphabet[(W shr 18) and $3f] +
              b64alphabet[(W shr 12) and $3f] +
              b64alphabet[(W shr 06) and $3f] +
              b64alphabet[(W shr 00) and $3f];
    if n <> 3 then
      Result := Copy(Result, 0, n + 1) + Copy(pad, 0, 3 - n);   //add padding when out len isn't 24 bits
  end;

begin
  Result := '';
  while Length(Value) > 0 do
  begin
    Result := Result + EncodeChunk(Copy(Value, 0, 3));
    Delete(Value, 1, 3);
  end;
end;

function DecodeBase64(Value: String): String;
  function DecodeChunk(const Chunk: String): String;
  var
    W: LongWord;
    i: Byte;
  begin
    W := 0; Result := '';
    for i := 1 to 4 do
      if Pos(Chunk[i], b64alphabet) <> 0 then
        W := W + Word((Pos(Chunk[i], b64alphabet) - 1)) shl ((4 - i) * 6);
    for i := 1 to 3 do
      Result := Result + Chr(W shr ((3 - i) * 8) and $ff);
  end;
begin
  Result := '';
  if Length(Value) mod 4 <> 0 then Exit;
  while Length(Value) > 0 do
  begin
    Result := Result + DecodeChunk(Copy(Value, 0, 4));
    Delete(Value, 1, 4);
  end;
end;

procedure ShowMessage(const Msg: String);
begin
  MessageBox(0, PChar(Msg), 'Message', 0);
end;

function WaitForRead(Sock: TSocket; Timeout: DWord): Boolean;
var
  readfd: TFDSet;
  tv: TimeVal;
begin
  tv.tv_sec := 0; tv.tv_usec := Timeout;
  FD_ZERO(readfd); FD_SET(Sock, readfd);
  if select(0, @readfd, nil, nil, @tv) < 1 then
    Result := False
  else
    Result := True;
end;

function GetHTTPStatus(List: TStringList): String;
var
  i, c: Word;
  S: String;
begin
  Result := '';
  if List.Count < 1 then Exit;
  S := List.Strings[0]; c := 0;
  for i := 1 to Length(S) do
    if c = 1 then
      Result := Result + S[i]
    else

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区视频在线观看| 韩日av一区二区| 日韩中文字幕一区二区三区| 美女精品一区二区| 91福利社在线观看| 日韩限制级电影在线观看| 欧美激情在线观看视频免费| 亚欧色一区w666天堂| av午夜一区麻豆| 91精品国产综合久久蜜臀 | 99久久精品国产一区| 精品视频免费在线| 综合亚洲深深色噜噜狠狠网站| 日韩av一区二区三区| 成人动漫中文字幕| 日韩一区二区三区av| 亚洲国产视频网站| 成人黄页在线观看| 精品国产99国产精品| 青娱乐精品视频在线| 91久久精品一区二区| 欧美国产日韩精品免费观看| 中文字幕中文字幕一区二区| 国产老肥熟一区二区三区| 欧美二区在线观看| 亚洲在线观看免费| 一本一道久久a久久精品综合蜜臀| 日韩欧美自拍偷拍| 亚洲综合偷拍欧美一区色| 风间由美中文字幕在线看视频国产欧美| 亚洲愉拍自拍另类高清精品| 国产乱色国产精品免费视频| 欧美酷刑日本凌虐凌虐| 亚洲成人av福利| 国产精品一品二品| 欧美电影精品一区二区| 亚洲激情av在线| 91高清视频免费看| 亚洲人成伊人成综合网小说| 国产成人av一区二区三区在线 | 国产精品久久久久久久久久久免费看 | 国产99久久久国产精品潘金| 精品噜噜噜噜久久久久久久久试看 | 国产成人在线视频播放| 91精品国产91久久久久久一区二区| 亚洲女人小视频在线观看| 国产一区二区三区四区五区入口 | 亚洲一区二区三区四区的| 欧美日韩一区中文字幕| 亚洲精品久久久久久国产精华液| 国产成人精品一区二区三区网站观看| 精品国产乱码久久久久久免费| 国产精品香蕉一区二区三区| 精品99999| 国产做a爰片久久毛片| 精品国产精品网麻豆系列| 国产91精品入口| 国产精品水嫩水嫩| 99国产精品国产精品毛片| 欧美激情一区二区三区不卡 | 日韩精品一区二区三区在线播放| 日本sm残虐另类| 欧美变态tickle挠乳网站| 成人毛片视频在线观看| 亚洲免费观看高清完整版在线| 91免费版在线| 亚洲国产综合91精品麻豆| wwwwxxxxx欧美| 成人三级伦理片| 亚洲日穴在线视频| 91免费看片在线观看| 秋霞电影网一区二区| 久久久久久久久久看片| 北条麻妃国产九九精品视频| 中文字幕五月欧美| 欧美va在线播放| 丁香激情综合国产| 亚洲国产日日夜夜| 精品少妇一区二区三区在线播放| 一本一本久久a久久精品综合麻豆| 亚洲国产精品影院| 欧美变态tickle挠乳网站| 风间由美一区二区av101| 午夜久久久久久电影| 精品处破学生在线二十三| 成人av电影在线观看| 亚洲九九爱视频| 中文字幕免费一区| 欧美日韩一区精品| 国产电影精品久久禁18| 亚洲精品欧美专区| 亚洲欧洲精品一区二区三区| 欧美年轻男男videosbes| 国产精品99久久久久久久vr| 亚洲你懂的在线视频| 久久精品一区蜜桃臀影院| 欧洲中文字幕精品| 国产精品一品二品| 亚洲一区二区视频| 亚洲美女一区二区三区| 久久亚洲春色中文字幕久久久| 色成年激情久久综合| 亚洲一二三区不卡| 国产精品每日更新在线播放网址 | 亚洲男人的天堂网| 26uuu色噜噜精品一区二区| 日本韩国一区二区| 99re亚洲国产精品| 国产在线观看免费一区| 五月激情综合网| 亚洲乱码日产精品bd| 一区二区三区四区不卡视频| 国产日韩综合av| 日韩一级免费观看| 97精品久久久久中文字幕| www.亚洲精品| 一区二区三区在线观看动漫| 日本一区二区在线不卡| 精品盗摄一区二区三区| 欧美成人高清电影在线| 日韩一区二区在线观看| 91精品国产日韩91久久久久久| 在线视频一区二区三| 欧美日韩一区中文字幕| 精品视频一区二区不卡| 欧美这里有精品| av高清久久久| 欧美日韩在线三级| 欧美欧美午夜aⅴ在线观看| 在线视频你懂得一区二区三区| 狠狠色狠狠色合久久伊人| 蜜臀av在线播放一区二区三区| 日韩精品欧美精品| 日韩电影在线看| 亚洲va中文字幕| 亚洲一区二区在线观看视频 | 在线播放亚洲一区| 色综合一区二区三区| 欧洲精品视频在线观看| 亚洲国产成人porn| 《视频一区视频二区| 国产精品18久久久久久vr| 欧美激情一区二区三区四区| 91香蕉视频mp4| jizzjizzjizz欧美| 精品成人a区在线观看| 日韩精品一区第一页| 欧美视频在线一区二区三区| 日日骚欧美日韩| 91免费看`日韩一区二区| 亚洲男人的天堂一区二区| 欧美韩日一区二区三区四区| 青娱乐精品在线视频| 制服丝袜国产精品| 亚洲午夜羞羞片| 色婷婷精品久久二区二区蜜臀av| 欧美激情在线一区二区三区| 国产激情精品久久久第一区二区| 精品对白一区国产伦| 久久国产精品第一页| 欧美一区二区三区日韩视频| 首页亚洲欧美制服丝腿| 欧美日韩在线直播| 首页国产欧美日韩丝袜| 欧美精品xxxxbbbb| 五月激情综合网| 日韩视频一区二区| 老司机免费视频一区二区三区| 日韩欧美不卡一区| 九九精品一区二区| 欧美mv和日韩mv的网站| 另类欧美日韩国产在线| 精品福利视频一区二区三区| 国内精品久久久久影院色| 久久久综合网站| 国产精品69毛片高清亚洲| 国产日韩三级在线| 99国产精品久久久久| 亚洲一区二区高清| 欧美精品丝袜久久久中文字幕| 日本一道高清亚洲日美韩| 欧美成人欧美edvon| 国产福利一区二区三区在线视频| 欧美国产日韩亚洲一区| 91丨九色丨尤物| 午夜精品成人在线视频| 日韩免费电影一区| 成人免费高清视频在线观看| 最新日韩在线视频| 欧美日韩精品一区二区三区| 日本欧美一区二区| 欧美国产激情二区三区| 色香蕉久久蜜桃| 蜜臀久久99精品久久久久久9| 国产欧美1区2区3区| 欧美怡红院视频| 久久精品国产第一区二区三区| 欧美国产激情二区三区| 欧美色手机在线观看| 国产一区二区中文字幕|