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

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

?? wsocket.pas

?? Delphi 網(wǎng)絡(luò)通信協(xié)議代碼,是多種網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)代碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號(hào):
Feb 14, 1999  V4.00 Jump to next major version number because lots of
              fundamental changes have been done. See below.

              Use runtime dynamic link with winsock. All winsock functions
              used by TWSocket are linked at runtime instead of loadtime. This
              allows programs to run without winsock installed, provided program
              doesn't try to use TWSocket or winsock function without first
              checking for winsock installation.
              Removed WSocketLoadWinsock and all use to DllStarted because it
              is no longer necessary because winsock is automatically loaded
              and initialized with the first call to a winsock function.

              Added MessagePump to centralize call to the message pump.
              It is a virtual procedure so that you can override it to
              cutomize your message pump. Also changed slightly ProcessMessages
              to closely match what is done in the forms unit.

              Removed old stuff related to WaitCtrl (was already excluded from
              compilation using a conditional directive).

              Added NOFORMS conditional compilation to exclude the Forms unit
              from wsocket. This will reduce exe or dll size by 100 to 150KB.
              To use this feature, you have to add NOFORMS in your project
              options in the "defines" edit box in the "directory/conditional"
              tab. Then you must add a message pump to your application and
              call it from TWSocket.OnMessagePump event handler. TWSocket really
              need a message pump in order to receive messages from winsock.
              Depending on how your application is built, you can use either
              TWSocket.MessageLoop or TWSocket.ProcessMessages to quickly build
              a working message pump. Or you may build your own custom message
              pump taylored to your needs. Your message pump must set
              TWSocket.Terminated property to TRUE when your application
              terminates or you may experience long delays when closing your
              application.
              You may use NOFORMS setting even if you use the forms unit (GUI
              application). Simply call Application.ProcessMessages in the
              OnMessagePump event handler.
              OnMessagePump event is not visible in the object inspector. You
              must assign it at run-time before using the component and after
              having created it (in a GUI application you can do that in the
              FormCreate event, in a console application, you can do it right
              after TWSocket.Create call).
Feb 17, 1999  V4.01 Added LineEcho and LineEdit features.
Feb 27, 1999  V4.02 Added TCustomLineWSocket.GetRcvdCount to make RcvdCount
              property and ReceiveStr work in line mode.
Mar 01, 1999  V4.03 Added conditional compile for BCB4. Thanks to James
              Legg <jlegg@iname.com>.
Mar 14, 1999  V4.04 Corrected a bug: wsocket hangup when there was no
              OnDataAvailable handler and line mode was on.
Apr 21, 1999  V4.05 Added H+ (long strings) and X+ (extended syntax)
              compilation options
May 07, 1999  V4.06 Added WSAECONNABORTED to valid error codes in TryToSend.
Jul 21, 1999  V4.07 Added GetPeerPort method, PeerPort and PeerAddr propertied
              as suggested by J. Punter <JPunter@login-bv.com>.

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit WSocket;

{$B-}           { Enable partial boolean evaluation   }
{$T-}           { Untyped pointers                    }
{$X+}           { Enable extended syntax              }
{$IFNDEF VER80} { Not for Delphi 1                    }
    {$H+}       { Use long strings                    }
    {$J+}       { Allow typed constant to be modified }
{$ENDIF}
{$IFDEF VER110} { C++ Builder V3.0                    }
    {$ObjExportAll On}
{$ENDIF}

interface

uses
  WinTypes, WinProcs, Messages, Classes, SysUtils,
{$IFNDEF NOFORMS} { See comments in history at 14/02/99 }
  Forms,
{$ENDIF}
  WSockBuf, WinSock;

const
  WSocketVersion            = 407;
  CopyRight    : String     = ' TWSocket (c) 96-99 F. Piette V4.07 ';
  WM_ASYNCSELECT            = WM_USER + 1;
  WM_ASYNCGETHOSTBYNAME     = WM_USER + 2;
  WM_ASYNCGETHOSTBYADDR     = WM_USER + 3;
  WM_TRIGGER_DATA_AVAILABLE = WM_USER + 20;
  WSA_WSOCKET_TIMEOUT       = 12001;
{$IFDEF WIN32}
  winsocket = 'wsock32.dll';      { 32 bits TCP/IP system DLL }
{$ELSE}
  winsocket = 'winsock.dll';      { 16 bits TCP/IP system DLL }
{$ENDIF}

type
  ESocketException = class(Exception);
  TBgExceptionEvent = procedure (Sender : TObject;
                                 E : Exception;
                                 var CanClose : Boolean) of object;

  TSocketState = (wsInvalidState,
                  wsOpened,     wsBound,
                  wsConnecting, wsConnected,
                  wsAccepting,  wsListening,
                  wsClosed);
  TSocketSendFlags = (wsSendNormal, wsSendUrgent);
  TSocketLingerOnOff = (wsLingerOff, wsLingerOn, wsLingerNoSet);

  TDataAvailable    = procedure (Sender: TObject; Error: word) of object;
  TDataSent         = procedure (Sender: TObject; Error: word) of object;
  TSessionClosed    = procedure (Sender: TObject; Error: word) of object;
  TSessionAvailable = procedure (Sender: TObject; Error: word) of object;
  TSessionConnected = procedure (Sender: TObject; Error: word) of object;
  TDnsLookupDone    = procedure (Sender: TObject; Error: Word) of object;
  TChangeState      = procedure (Sender: TObject;
                                 OldState, NewState : TSocketState) of object;
  TDebugDisplay     = procedure (Sender: TObject; var Msg : String) of object;
  TWSocketSyncNextProc = procedure of object;
{$IFDEF VER110}  { C++Builder V3 }
  TSocket = integer;
{$ENDIF}
{$IFDEF VER120} { C++Builder V4 }
  TSocket = integer;
{$ENDIF}

  TCustomWSocket = class(TComponent)
  private
    FDnsResult          : String;
    FDnsResultList      : TStrings;
    FASocket            : TSocket;               { Accepted socket }
    FBufList            : TList;
    FBufSize            : Integer;
    FSendFlags          : Integer;
    FLastError          : Integer;
    FWindowHandle       : HWND;
    FDnsLookupBuffer    : array [0..MAXGETHOSTSTRUCT] of char;
    FDnsLookupHandle    : THandle;
  {$IFDEF VER80}
    FTrumpetCompability : Boolean;
  {$ENDIF}
  protected
    FHSocket            : TSocket;
    FAddrStr            : String;
    FAddrResolved       : Boolean;
    FAddrFormat         : Integer;
    FAddrAssigned       : Boolean;
    FProto              : integer;
    FProtoAssigned      : Boolean;
    FProtoResolved      : Boolean;
    FLocalPortResolved  : Boolean;
    FProtoStr           : String;
    FPortStr            : String;
    FPortAssigned       : Boolean;
    FPortResolved       : Boolean;
    FPortNum            : Integer;
    FLocalPortStr       : String;
    FLocalPortNum       : Integer;
    FType               : integer;
    FLingerOnOff        : TSocketLingerOnOff;
    FLingerTimeout      : Integer;              { In seconds, 0 = disabled }
    ReadLineCount       : Integer;
    bWrite              : Boolean;
    nMoreCnt            : Integer;
    bMoreFlag           : Boolean;
    nMoreMax            : Integer;
    bAllSent            : Boolean;
    FReadCount          : LongInt;
    FPaused             : Boolean;
    FCloseInvoked       : Boolean;
    FFlushTimeout       : Integer;
    FMultiThreaded      : Boolean;
    FState              : TSocketState;
    FRcvdFlag           : Boolean;
    FTerminated         : Boolean;
    FOnSessionAvailable : TSessionAvailable;
    FOnSessionConnected : TSessionConnected;
    FOnSessionClosed    : TSessionClosed;
    FOnChangeState      : TChangeState;
    FOnDataAvailable    : TDataAvailable;
    FOnDataSent         : TDataSent;
    FOnLineTooLong      : TNotifyEvent;
    FOnDnsLookupDone    : TDnsLookupDone;
    FOnError            : TNotifyEvent;
    FOnBgException      : TBgExceptionEvent;
    FOnDisplay          : TDebugDisplay;
    FOnMessagePump      : TNotifyEvent;
    procedure   WndProc(var MsgRec: TMessage); virtual;
    procedure   SocketError(sockfunc: string);
    procedure   WMASyncSelect(var msg: TMessage); message WM_ASYNCSELECT;
    procedure   WMAsyncGetHostByName(var msg: TMessage); message WM_ASYNCGETHOSTBYNAME;
    procedure   WMAsyncGetHostByAddr(var msg: TMessage); message WM_ASYNCGETHOSTBYADDR;
    procedure   ChangeState(NewState : TSocketState);
    procedure   TryToSend;
    procedure   ASyncReceive(Error : Word);
    procedure   AssignDefaultValue; virtual;
    procedure   InternalClose(bShut : Boolean; Error : Word); virtual;
    procedure   Notification(AComponent: TComponent; operation: TOperation); override;
    procedure   SetSendFlags(newValue : TSocketSendFlags);
    function    GetSendFlags : TSocketSendFlags;
    procedure   SetAddr(InAddr : String);
    function    GetAddr : String;
    procedure   SetRemotePort(sPort : String); virtual;
    function    GetRemotePort : String;
    procedure   SetLocalPort(sLocalPort : String);
    procedure   SetProto(sProto : String); virtual;
    function    GetProto : String;
    function    GetRcvdCount : LongInt; virtual;
    procedure   BindSocket; virtual;
    procedure   SendText(Str : String);
    function    RealSend(Data : Pointer; Len : Integer) : Integer; virtual;
    procedure   RaiseExceptionFmt(const Fmt : String; args : array of const); virtual;
    procedure   RaiseException(const Msg : String); virtual;
    procedure   HandleBackGroundException(E: Exception); virtual;
    procedure   TriggerDisplay(Msg : String);
    function    TriggerDataAvailable(Error : Word) : Boolean; virtual;
    procedure   TriggerSessionAvailable(Error : Word); virtual;
    procedure   TriggerSessionConnected(Error : Word); virtual;
    procedure   TriggerSessionClosed(Error : Word); virtual;
    procedure   TriggerDataSent(Error : Word); virtual;
    procedure   TriggerChangeState(OldState, NewState : TSocketState); virtual;
    procedure   TriggerDNSLookupDone(Error : Word); virtual;
    procedure   TriggerError; virtual;
    function    DoRecv(var Buffer;
                       BufferSize : Integer;
                       Flags      : Integer) : Integer; virtual;
    function    DoRecvFrom(FHSocket    : TSocket;
                           var Buffer;
                           BufferSize  : Integer;
                           Flags       : Integer;
                           var From    : TSockAddr;
                           var FromLen : Integer) : Integer; virtual;
  public
    sin         : TSockAddrIn;
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   Connect; virtual;
    procedure   Close; virtual;
    procedure   Abort; virtual;
    procedure   Flush; virtual;
    procedure   WaitForClose; virtual;
    procedure   Listen; virtual;
    function    Accept: TSocket; virtual;
    function    Receive(Buffer : Pointer; BufferSize: integer) : integer; virtual;
    function    ReceiveStr : string; virtual;
    function    ReceiveFrom(Buffer      : Pointer;
                            BufferSize  : Integer;
                            var From    : TSockAddr;
                            var FromLen : Integer) : integer; virtual;
    function    PeekData(Buffer : Pointer; BufferSize: integer) : integer;
    function    Send(Data : Pointer; Len : Integer) : integer; virtual;
    function    SendTo(Dest    : TSockAddr;
                       DestLen : Integer;
                       Data    : Pointer;
                       Len     : Integer) : integer; virtual;
    function    SendStr(Str : String) : Integer; virtual;
    procedure   DnsLookup(HostName : String); virtual;
    procedure   ReverseDnsLookup(HostAddr: String); virtual;
    procedure   CancelDnsLookup; virtual;
    function    GetPeerAddr: string; virtual;
    function    GetPeerPort: string; virtual;
    function    GetPeerName(var Name : TSockAddrIn; NameLen : Integer) : integer; virtual;
    function    GetXPort: string; virtual;
    function    TimerIsSet(var tvp : TTimeVal) : Boolean; virtual;
    procedure   TimerClear(var tvp : TTimeVal); virtual;
    function    TimerCmp(var tvp : TTimeVal; var uvp : TTimeVal; IsEqual : Boolean) : Boolean; virtual;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风间由美一区二区三区在线观看| 丰满岳乱妇一区二区三区| 国产亚洲福利社区一区| 欧美图区在线视频| 成人网在线播放| 蜜臀国产一区二区三区在线播放 | 成人黄色小视频| 青青草国产精品亚洲专区无| 亚洲免费观看高清完整版在线 | 麻豆国产精品一区二区三区| 日韩美女久久久| 久久久99免费| 欧美日韩国产小视频| 9l国产精品久久久久麻豆| 国产伦精品一区二区三区免费 | 麻豆国产一区二区| 亚洲午夜精品网| 综合自拍亚洲综合图不卡区| 久久精品欧美一区二区三区麻豆| 日韩欧美专区在线| 欧美精品亚洲二区| 欧美性猛交xxxx黑人交| 91视频在线看| 波多野结衣中文字幕一区二区三区 | 欧洲精品一区二区| 日韩精品自拍偷拍| 在线视频欧美精品| 成a人片国产精品| 国产精品一区专区| 精品亚洲国内自在自线福利| 同产精品九九九| 亚洲国产精品久久一线不卡| 一区二区三区在线免费| 中文字幕在线不卡国产视频| 国产欧美日韩综合| 国产婷婷一区二区| 国产午夜三级一区二区三| 精品国产麻豆免费人成网站| 日韩欧美卡一卡二| 精品人在线二区三区| 欧美成人国产一区二区| 日韩精品一区二区三区在线| 日韩视频国产视频| 久久综合九色综合97婷婷| 久久综合九色综合欧美98 | 91黄色在线观看| 色久综合一二码| 在线观看日韩精品| 欧美日韩精品一区视频| 欧美精品精品一区| 日韩欧美国产综合| 久久久久久久久一| 成人免费在线视频观看| 亚洲免费观看高清完整版在线观看熊| 亚洲精品国产a| 亚洲国产日韩一级| 日韩av不卡在线观看| 激情综合五月天| 成人午夜精品在线| 在线精品视频一区二区三四| 欧美伦理影视网| 日韩精品一区二区三区在线播放 | 美女网站色91| 国产成人免费视频网站| 91蜜桃视频在线| 欧美日韩中文精品| 欧美mv日韩mv亚洲| 国产精品国产自产拍高清av王其| 亚洲美女视频在线| 乱中年女人伦av一区二区| 国产99一区视频免费| 欧美丝袜自拍制服另类| 26uuu精品一区二区在线观看| 国产精品毛片无遮挡高清| 亚洲图片欧美视频| 国产乱码精品一品二品| 日本电影亚洲天堂一区| 精品理论电影在线| 亚洲欧美国产三级| 韩国中文字幕2020精品| 99久久久免费精品国产一区二区| 欧美日韩在线一区二区| 久久久青草青青国产亚洲免观| 一区精品在线播放| 美美哒免费高清在线观看视频一区二区| 国产精品一区二区久激情瑜伽| 91国产丝袜在线播放| 精品精品国产高清一毛片一天堂| 亚洲天堂成人网| 国产又黄又大久久| 欧美在线高清视频| 国产日韩欧美电影| 五月天视频一区| 成人av资源下载| 欧美电影免费观看高清完整版在| 亚洲日本青草视频在线怡红院| 美女网站视频久久| 91黄色免费网站| 日本一区二区久久| 日本成人中文字幕| 欧美艳星brazzers| 国产精品人妖ts系列视频| 美国av一区二区| 在线一区二区三区四区五区| 亚洲国产成人在线| 久久电影网站中文字幕 | 久久精品视频免费| 男人的天堂亚洲一区| 在线视频观看一区| 专区另类欧美日韩| 国产精品一区二区三区网站| 91精品国产综合久久精品图片 | 免费成人在线观看视频| 欧美体内she精高潮| 中文字幕一区二区三区四区不卡| 国产在线精品免费| 日韩亚洲欧美在线| 五月婷婷久久综合| 欧美日韩视频专区在线播放| 亚洲精品五月天| 99热这里都是精品| 国产精品毛片久久久久久| 国产成人欧美日韩在线电影| 2021国产精品久久精品| 伦理电影国产精品| 日韩丝袜美女视频| 日本成人在线一区| 欧美日韩国产一级| 肉丝袜脚交视频一区二区| 欧美色图一区二区三区| 一区二区三区小说| 色综合久久88色综合天天| 亚洲素人一区二区| 色哟哟国产精品| 一级精品视频在线观看宜春院| 99国内精品久久| 亚洲人成影院在线观看| 99re热这里只有精品视频| 中文字幕亚洲不卡| 91丨九色丨蝌蚪丨老版| 一区二区三区四区在线播放| 91在线观看视频| 亚洲精品亚洲人成人网在线播放| 色呦呦一区二区三区| 一区二区三区欧美久久| 欧美日韩国产bt| 免费成人结看片| 久久久国产午夜精品| 成人午夜私人影院| 亚洲精品中文在线| 欧美猛男男办公室激情| 理论电影国产精品| 国产午夜亚洲精品羞羞网站| gogogo免费视频观看亚洲一| 亚洲精品国产成人久久av盗摄| 欧美三级视频在线观看| 午夜电影一区二区三区| 欧美一级片在线| 国产麻豆9l精品三级站| 18成人在线视频| 欧美中文字幕一区二区三区 | 亚洲高清免费观看高清完整版在线观看| 欧美视频一区二区在线观看| 日产国产欧美视频一区精品| 精品不卡在线视频| 成人毛片视频在线观看| 亚洲电影激情视频网站| 精品国产乱码久久久久久免费| 成人网页在线观看| 亚洲成人动漫在线免费观看| 精品国产乱码久久久久久免费| av在线播放一区二区三区| 亚洲成人综合在线| 久久久不卡网国产精品二区| 91麻豆免费看| 久久爱www久久做| 国产精品卡一卡二卡三| 欧美精品国产精品| 国产成人av电影在线| 亚洲va天堂va国产va久| 国产午夜精品一区二区三区视频| 色狠狠色噜噜噜综合网| 激情偷乱视频一区二区三区| 18涩涩午夜精品.www| 日韩午夜精品视频| 色欧美片视频在线观看在线视频| 蜜桃视频第一区免费观看| 亚洲视频一区二区免费在线观看| 欧美一区二区三区免费观看视频 | 亚洲一区二区四区蜜桃| 精品粉嫩aⅴ一区二区三区四区| 波多野结衣精品在线| 九色综合狠狠综合久久| 亚洲欧洲制服丝袜| 久久久综合精品| 欧美美女喷水视频| 色综合亚洲欧洲| 国产成人激情av| 久久99国产精品久久99| 亚洲制服丝袜在线|