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

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

?? tncnx.pas

?? Delphi 網絡通信協議代碼,是多種網絡協議的實現代碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Program:      TNCNX.PAS
Object:       Delphi component which implement the TCP/IP telnet protocol
              including some options negociations.
              RFC854, RFC885, RFC779, RFC1091
Author:       Fran鏾is PIETTE
EMail:        francois.piette@pophost.eunet.be    
              francois.piette@rtfm.be             http://www.rtfm.be/fpiette
Creation:     April, 1996
Version:      2.05
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1996, 1997, 1998 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.be>

              This software is provided 'as-is', without any express or
  	      implied warranty.  In no event will the author be held liable
              for any  damages arising from the use of this software.

              Permission is granted to anyone to use this software for any
              purpose, including commercial applications, and to alter it
              and redistribute it freely, subject to the following
              restrictions:

              1. The origin of this software must not be misrepresented,
                 you must not claim that you wrote the original software.
                 If you use this software in a product, an acknowledgment
                 in the product documentation would be appreciated but is
                 not required.

              2. Altered source versions must be plainly marked as such, and
                 must not be misrepresented as being the original software.

              3. This notice may not be removed or altered from any source
                 distribution.

              4. You must register this software by sending a picture postcard
                 to the author. Use a nice stamp and mention your name, street
                 address, EMail address and any comment you like to say.

Updates:
Jul 22, 1997 Adapted to Delphi 3
Sep 5, 1997  Added version information, removed old code, added OnTermType
             Renamed some indentifier to be more standard.
Sep 24, 1997 V2.03 Added procedures to negociate options
May 12, 1998 V2.04 Changed NegociateOption to properly handle unwanted
             option as Jan Tomasek <xtomasej@feld.cvut.cz> suggested.
Aug 10, 1998 V2.05 Cleared strSubOption after NegociateSubOption as Jan
             Tomasek <xtomasej@feld.cvut.cz> suggested.


 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit TnCnx;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Controls, Forms,
  WSocket, Winsock;

const
  TnCnxVersion       = 205;
  CopyRight : String = ' TTnCnx (c) 96-98 F. Piette V2.05 ';

  { Telnet command characters                                             }
  TNCH_EOR        = #239;     { $EF End Of Record (preceded by IAC)       }
  TNCH_SE         = #240;     { $F0 End of subnegociation parameters      }
  TNCH_NOP        = #241;     { $F1 No operation                          }
  TNCH_DATA_MARK  = #242;     { $F2 Data stream portion of a Synch        }
  TNCH_BREAK      = #243;     { $F3 NVT charcater break                   }
  TNCH_IP         = #244;     { $F4 Interrupt process                     }
  TNCH_AO         = #245;     { $F5 Abort output                          }
  TNCH_AYT        = #246;     { $F6 Are you there                         }
  TNCH_EC         = #247;     { $F7 Erase character                       }
  TNCH_EL         = #248;     { $F8 Erase line                            }
  TNCH_GA         = #249;     { $F9 Go ahead                              }
  TNCH_SB         = #250;     { $FA Subnegociation                        }
  TNCH_WILL       = #251;     { $FB Will                                  }
  TNCH_WONT       = #252;     { $FC Wont                                  }
  TNCH_DO         = #253;     { $FD Do                                    }
  TNCH_DONT       = #254;     { $FE Dont                                  }
  TNCH_IAC        = #255;     { $FF IAC                                   }

  { Telnet options                                                        }
  TN_TRANSMIT_BINARY      = #0;   { $00 }
  TN_ECHO                 = #1;   { $01 }
  TN_RECONNECTION         = #2;   { $02 }
  TN_SUPPRESS_GA          = #3;   { $03 }
  TN_MSG_SZ_NEGOC         = #4;   { $04 }
  TN_STATUS               = #5;   { $05 }
  TN_TIMING_MARK          = #6;   { $06 }
  TN_NOPTIONS             = #6;   { $06 }
  TN_DET                  = #20;  { $14 }
  TN_SEND_LOC             = #23;  { $17 }
  TN_TERMTYPE             = #24;  { $18 }
  TN_EOR                  = #25;  { $19 }
  TN_NAWS                 = #31;  { $1F }
  TN_TERMSPEED            = #32;  { $20 }
  TN_TFC                  = #33;  { $21 }
  TN_XDISPLOC             = #35;  { $23 }
  TN_EXOPL                = #255; { $FF }

  TN_TTYPE_SEND		  = #1;
  TN_TTYPE_IS		  = #0;

type
  TTnCnx = class;

  TTnSessionConnected = procedure (Sender: TTnCnx; Error : word) of object;
  TTnSessionClosed    = procedure (Sender: TTnCnx; Error : word) of object;
  TTnDataAvailable    = procedure (Sender: TTnCnx; Buffer : PChar; Len : Integer) of object;
  TTnDisplay          = procedure (Sender: TTnCnx; Str : String) of object;

  TTnCnx= class(TComponent)
  public
    Socket              : TWSocket;
  private
    FPort               : String;
    FHost               : String;
    FLocation           : String;
    FTermType           : String;
    RemoteBinMode       : Boolean;
    LocalBinMode        : Boolean;
    FLocalEcho          : Boolean;
    Spga                : Boolean;
    FTType              : Boolean;
    FBuffer             : array [0..2048] of char;
    FBufferCnt          : Integer;
    FWindowHandle       : HWND;
    FOnSessionConnected : TTnSessionConnected;
    FOnSessionClosed    : TTnSessionClosed;
    FOnDataAvailable    : TTnDataAvailable;
    FOnDisplay          : TTnDisplay;
    FOnEOR              : TNotifyEvent;
    FOnSendLoc          : TNotifyEvent;
    FOnTermType         : TNotifyEvent;
    FOnLocalEcho        : TNotifyEvent;
    procedure WndProc(var MsgRec: TMessage);
    procedure SocketSessionConnected(Sender: TObject; Error : word);
    procedure SocketSessionClosed(Sender: TObject; Error : word);
    procedure SocketDataAvailable(Sender: TObject; Error : word);
    procedure Display(Str : String);
    procedure AddChar(Ch : Char);
    procedure ReceiveChar(Ch : Char);
    procedure Answer(chAns : Char; chOption : Char);
    procedure NegociateSubOption(strSubOption : String);
    procedure NegociateOption(chAction : Char; chOption : Char);
    procedure FlushBuffer;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    function  GetState : TSocketState;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    function    Send(Data : Pointer; Len : Integer) : integer;
    function    SendStr(Data : String) : integer;
    procedure   Connect;
    function    IsConnected : Boolean;
    procedure   WillOption(chOption : Char);
    procedure   WontOption(chOption : Char);
    procedure   DontOption(chOption : Char);
    procedure   DoOption(chOption : Char);
    procedure   Close;
    procedure   Pause;
    procedure   Resume;
    property    State : TSocketState                  read  GetState;
    property    Handle : HWND                         read  FWindowHandle;
  published
    property Port : String                            read  FPort
                                                      write FPort;
    property Host : String                            read  FHost
                                                      write FHost;
    property Location : String                        read  FLocation
                                                      write FLocation;
    property TermType : String                        read  FTermType
                                                      write FTermType;
    property LocalEcho : Boolean                      read  FLocalEcho
                                                      write FLocalEcho;
    property OnSessionConnected : TTnSessionConnected read  FOnSessionConnected
                                                      write FOnSessionConnected;
    property OnSessionClosed :    TTnSessionClosed    read  FOnSessionClosed
                                                      write FOnSessionClosed;
    property OnDataAvailable :    TTnDataAvailable    read  FOnDataAvailable
                                                      write FOnDataAvailable;
    property OnDisplay :          TTnDisplay          read  FOnDisplay
                                                      write FOnDisplay;
    property OnEndOfRecord :      TNotifyEvent        read  FOnEOR
                                                      write FOnEOR;
    property OnSendLoc :          TNotifyEvent        read  FOnSendLoc
                                                      write FOnSendLoc;
    property OnTermType :         TNotifyEvent        read  FOnTermType
                                                      write FOnTermType;
    property OnLocalEcho :        TNotifyEvent        read  FOnLocalEcho
                                                      write FOnLocalEcho;
  end;

procedure Register;

implementation

{$DEFINE Debug}      { Add or remove minus sign before dollar sign to }
                     { generate code for debug message output         }

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure Register;
begin
  RegisterComponents('FPiette', [TTnCnx]);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure DebugString(Msg : String);
const
    Cnt : Integer = 0;
var
    Buf : String[20];
begin
{$IFDEF Debug}
    Cnt := Cnt + 1;
    Buf := IntToHex(Cnt, 4) + ' ' + #0;
    OutputDebugString(@Buf[1]);

{$IFNDEF WIN32}
    if Length(Msg) < High(Msg) then
        Msg[Length(Msg) + 1] := #0;
{$ENDIF}

    OutputDebugString(@Msg[1]);
{$ENDIF}
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.WndProc(var MsgRec: TMessage);
begin
     with MsgRec do
         Result := DefWindowProc(Handle, Msg, wParam, lParam);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TTnCnx.Create(AOwner: TComponent);
begin
    inherited Create(AOwner);
    FWindowHandle             := AllocateHWnd(WndProc);
    FLocation                 := 'TNCNX';
    FTermType                 := 'VT100';
    FPort                     := '23';
    Socket                    := TWSocket.Create(Self);
    Socket.OnSessionConnected := SocketSessionConnected;
    Socket.OnDataAvailable    := SocketDataAvailable;
    Socket.OnSessionClosed    := SocketSessionClosed;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TTnCnx.Destroy;
begin
    if Assigned(Socket) then begin
        Socket.Free;
        Socket := nil;
    end;
    DeallocateHWnd(FWindowHandle);
    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Notification(AComponent: TComponent; Operation: TOperation);
begin
    inherited Notification(AComponent, Operation);
    if (AComponent = Socket) and (Operation = opRemove) then
        Socket := nil;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Pause;
begin
    if not Assigned(Socket) then
        Exit;
    Socket.Pause;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Resume;
begin
    if not Assigned(Socket) then
        Exit;
    Socket.Resume;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Connect;
begin
    if not Assigned(Socket) then
        Exit;

    if Socket.State <> wsClosed then
        Socket.Close;

    Socket.Proto := 'tcp';
    Socket.Port  := FPort;
    Socket.Addr  := FHost;
    Socket.Connect;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TTnCnx.IsConnected : Boolean;
begin
    Result := Socket.State = wsConnected;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Close;
begin
    if Assigned(Socket) then
        Socket.Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.Display(Str : String);
begin
    if Assigned(FOnDisplay) then
        FOnDisplay(Self, Str);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TTnCnx.GetState : TSocketState;
begin
    if Assigned(Socket) then
        Result := Socket.State
    else
        Result := wsInvalidState;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnCnx.SocketSessionConnected(Sender: TObject; Error : word);
begin
    if Assigned(FOnSessionConnected) then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色精品在线视频| 亚洲高清免费视频| 亚洲丶国产丶欧美一区二区三区| 日本亚洲欧美天堂免费| 色婷婷精品大视频在线蜜桃视频| 日韩欧美国产麻豆| 亚洲午夜电影在线观看| 91视频免费播放| 国产精品水嫩水嫩| 国产成人亚洲综合色影视| 欧美精品一二三区| 亚洲一区二区三区四区在线免费观看 | 欧美日韩五月天| 国产精品嫩草影院av蜜臀| 久久国产成人午夜av影院| 欧美精品一级二级三级| 亚洲精品乱码久久久久久久久| 成人在线视频首页| 久久久久久久久岛国免费| 蜜桃精品视频在线| 欧美一级夜夜爽| 免费在线观看一区| 日韩欧美在线影院| 亚洲小说春色综合另类电影| 色综合久久综合网欧美综合网| 久久九九久精品国产免费直播| 久久精品国产免费看久久精品| 欧美精品自拍偷拍| 日本vs亚洲vs韩国一区三区二区 | 成人激情av网| 国产欧美日韩亚州综合| 国产在线精品不卡| 久久精品人人爽人人爽| 丁香六月综合激情| 日韩美女精品在线| 在线观看网站黄不卡| 亚洲一级不卡视频| 欧美日韩高清一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 精品视频在线免费| 日本午夜一区二区| 久久精品一级爱片| 91丨九色丨黑人外教| 一区二区三区欧美日| 欧美色精品在线视频| 日本系列欧美系列| 国产日本亚洲高清| 在线观看亚洲a| 久久精品国产77777蜜臀| 欧美精品一区二区久久久| 国产成人啪午夜精品网站男同| 国产精品成人一区二区艾草 | 久久影院电视剧免费观看| 国产高清成人在线| 亚洲视频在线一区| 在线不卡中文字幕| 国产成人午夜精品影院观看视频 | 国产在线乱码一区二区三区| 国产欧美日本一区视频| 欧美亚洲国产一卡| 麻豆91在线观看| 亚洲视频在线观看三级| 欧美日韩国产影片| 大白屁股一区二区视频| 亚洲国产毛片aaaaa无费看| 欧美成人高清电影在线| 99视频一区二区| 国产ts人妖一区二区| 亚洲自拍偷拍av| 久久男人中文字幕资源站| 91高清在线观看| 国产精品一区二区在线看| 一区二区三区蜜桃网| 精品国产伦一区二区三区观看体验| 成人av免费在线播放| 日韩国产欧美一区二区三区| 国产精品毛片无遮挡高清| 欧美一区二区日韩| 色香蕉成人二区免费| 国产精品亚洲专一区二区三区 | 久久国产精品第一页| 亚洲免费观看视频| 国产亚洲欧美一区在线观看| 7777精品伊人久久久大香线蕉| 91在线观看污| 国产高清无密码一区二区三区| 亚洲v精品v日韩v欧美v专区| 国产精品久久久久久久久久久免费看| 欧美一区二区三区四区久久| 色婷婷av一区二区三区之一色屋| 国产乱子伦视频一区二区三区 | 亚洲夂夂婷婷色拍ww47| 中文字幕一区二区在线观看| 欧美精品一区二| 777欧美精品| 欧美日韩高清一区二区| 色88888久久久久久影院野外| 国产69精品久久777的优势| 久久国产精品99久久久久久老狼| 日韩精品一二区| 性感美女久久精品| 亚洲超碰97人人做人人爱| 一区二区三区日韩欧美| 亚洲精品大片www| 亚洲人成网站色在线观看| 国产精品女同一区二区三区| 国产欧美日产一区| 日本一区二区视频在线| 国产女人18水真多18精品一级做 | 欧美一区二区日韩一区二区| 欧美性生活久久| 欧美日韩五月天| 欧美精品久久一区二区三区| 欧美日韩国产123区| 欧美日韩大陆一区二区| 91麻豆精品91久久久久久清纯| 欧美另类久久久品| 欧美一区在线视频| 欧美精品一区二区三区蜜臀| 久久久久亚洲蜜桃| 国产精品欧美一区二区三区| 中文字幕在线不卡| 亚洲一区二区欧美日韩| 亚洲国产综合视频在线观看| 日韩高清不卡一区二区三区| 日韩**一区毛片| 国内精品久久久久影院薰衣草| 国产盗摄精品一区二区三区在线 | 高清视频一区二区| 91偷拍与自偷拍精品| 亚洲国产精品精华液ab| 中文字幕不卡在线| 亚洲靠逼com| 日韩1区2区日韩1区2区| 国产精品538一区二区在线| 99精品在线免费| 欧美日韩一区二区三区四区 | 精久久久久久久久久久| 国产福利一区在线观看| 色综合久久久久综合99| 日韩欧美你懂的| 国产精品伦理在线| 日韩主播视频在线| 国产传媒欧美日韩成人| 日本道精品一区二区三区| 日韩午夜激情电影| 亚洲三级在线免费观看| 日本成人在线视频网站| 不卡的av中国片| 日韩一区二区三区四区五区六区| 国产欧美一区二区三区沐欲 | 一区二区三区精密机械公司| 麻豆成人在线观看| 日本精品视频一区二区三区| 欧美一区二区三区免费观看视频| 国产人成亚洲第一网站在线播放| 午夜精品国产更新| av激情亚洲男人天堂| 欧美一区二区三区四区久久| 亚洲欧美日韩国产成人精品影院| 久久99久久99小草精品免视看| 色偷偷一区二区三区| 国产亚洲精品aa| 日韩av高清在线观看| 色诱亚洲精品久久久久久| 久久久久久久久一| 日韩av一二三| 欧洲一区二区三区免费视频| 国产精品亲子伦对白| 九九久久精品视频| 欧美色涩在线第一页| 国产精品久久久久四虎| 国产精品88888| 欧美岛国在线观看| 亚洲va中文字幕| 欧美在线一二三四区| 成人免费一区二区三区视频| 国产乱子伦视频一区二区三区| 91精品国产综合久久久久| 洋洋成人永久网站入口| 97精品电影院| 亚洲桃色在线一区| 91丨porny丨在线| 日韩一区日韩二区| a美女胸又www黄视频久久| 国产色91在线| 国产成人免费在线| 久久久精品黄色| 国产高清成人在线| 久久久久国色av免费看影院| 精品一二三四在线| 日韩精品一区二区三区三区免费| 青椒成人免费视频| 日韩欧美一区二区久久婷婷| 蜜臀av性久久久久蜜臀aⅴ | 亚洲女子a中天字幕| 99在线视频精品| 国产精品成人免费在线| 91一区二区在线观看| 亚洲人成网站在线|