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

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

?? consrv1c.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
字號:
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  Client handling
Creation:     Feb 17, 1999
Version:      1.00

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit ConSrv1C;

interface

uses
    Windows, SysUtils, Messages, Classes, WSocket, WinSock;

const
    WM_CLIENT_DISCONNECTED = WM_USER + 1;
    CmdPrompt = #13#10 + '--> ';

type
    // TClientObject handle a single client communication
    TClientObject = class (TObject)
    protected
        FCliWSocket    : TWSocket;
        FCtrlWindow    : HWND;
        FCommand       : array [0..2047] of char;
        FCmdLen        : Integer;
        FPeerName      : String;
        procedure DataAvailableHandler(Sender : TObject; Error : Word);
        procedure SessionClosedHandler(Sender : TObject; Error : Word);
        procedure CommandInterpreter;
        procedure TELNET_Interpreter(CommandVerb : String;
                                     CommandTail : String);
    public
        constructor Create; virtual;
        destructor  Destroy; override;
        procedure   StartClient(ASocket : TSocket);
        property CtrlWindow : HWND     read  FCtrlWindow
                                       write FCtrlWindow;
        property PeerName : String     read  FPeerName;
    end;

implementation


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TClientObject.Create;
begin
    inherited Create;
    FCliWSocket := TWSocket.Create(nil);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TClientObject.Destroy;
begin
    if Assigned(FCliWSocket) then begin
        FCliWSocket.Destroy;
        FCliWSocket := nil;
    end;
    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TClientObject.StartClient(ASocket : TSocket);
begin
    FCliWSocket.LineMode        := TRUE;
    FCliWSocket.LineEnd         := #13#10;
    FCliWSocket.LineEcho        := TRUE;
    FCliWSocket.LineEdit        := TRUE;
    FCliWSocket.OnDataAvailable := DataAvailableHandler;
    FCliWSocket.OnSessionClosed := SessionClosedHandler;
    FCliWSocket.HSocket         := ASocket;
    FPeerName                   := FCliWSocket.GetPeerAddr;
    FCliWSocket.SendStr('Welcome to ConSrv' + CmdPrompt);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TClientObject.SessionClosedHandler(Sender : TObject; Error : Word);
begin
    PostMessage(FCtrlWindow, WM_CLIENT_DISCONNECTED, 0, LParam(Self));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
// This handler is called each time we received a complete line from
// connected client (remember we use line mode)
procedure TClientObject.DataAvailableHandler(Sender : TObject; Error : Word);
begin
    // Get data from socket component. We should receive a complete line.
    FCmdLen := FCliWSocket.Receive(@FCommand, SizeOf(FCommand) - 1);
    if FCmdLen <= 0 then
        Exit;    // No data available
    if FCliWSocket.State <> wsConnected then
        Exit;    // Ignore any data received while closing

    // Remove trailling CR/LF, if any (could be missing if our buffer
    // was too small)
    while (FCmdLen > 0) and (FCommand[FCmdLen - 1] in [#13, #10]) do
        Dec(FCmdLen);
    FCommand[FCmdLen] := #0;

    // Interpret received command
    CommandInterpreter;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This is the command line interpreter. Should extend the code to support   }
{ every command needed...                                                   }
procedure TClientObject.CommandInterpreter;
var
    CommandVerb : String;
    CommandTail : String;
    I, J        : Integer;
begin
    { Skip leading spaces }
    I := 0;
    while (I < FCmdLen) and (FCommand[I] in [' ', #9]) do
        Inc(I);

    { Find separator and separe CommandVerb and CommandTail }
    J := I;
    while TRUE do begin
        if (J >= FCmdLen) then begin
            SetLength(CommandVerb, FCmdLen - I);
            Move(FCommand[I], CommandVerb[1], Length(CommandVerb));
            CommandTail := '';
            break;
        end;

        if FCommand[J] in [' ', #9, '/'] then begin
            SetLength(CommandVerb, J - I);
            Move(FCommand[I], CommandVerb[1], Length(CommandVerb));
            SetLength(CommandTail, FCmdLen - J);
            Move(FCommand[J], CommandTail[1], Length(CommandTail));
            break;
        end;
        Inc(J);
    end;
    CommandVerb := UpperCase(CommandVerb);

    // We could chack which port we are servicing and call appropriate
    // interpeter (telnet, smtp, pop3, nntp or any line oriented protocol)
    TELNET_Interpreter(CommandVerb, CommandTail);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Not a real TELNET command interpreter, just enough to see how it could    }
{ be implemented.                                                           }
procedure TClientObject.TELNET_Interpreter(
    CommandVerb : String;
    CommandTail : String);
begin
    if Length(CommandVerb) > 0 then begin
        FCliWSocket.SendStr(#13#10 + 'Executing command ''' +
                            CommandVerb + '''...' + #13#10);

        if CommandVerb = 'EXIT' then begin
            PostMessage(FCtrlWindow, WM_CLIENT_DISCONNECTED, 0, LParam(Self));
//            FCliWSocket.Close;
            Exit;
        end
        else if CommandVerb = 'HELP' then
            FCliWSocket.SendStr('List of commands:' + #13#10 +
                                '    Exit      logoff from server' + #13#10 +
                                '    Help      show this help screen' + #13#10)
        else
            FCliWSocket.SendStr('Unknown command, ignoring');
    end;

    FCliWSocket.SendStr(CmdPrompt);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品久久理论片| 中文字幕在线一区二区三区| 91在线观看一区二区| 韩国欧美国产1区| 日本成人在线一区| 轻轻草成人在线| 日本不卡在线视频| 美日韩一区二区| 玖玖九九国产精品| 经典三级视频一区| 国产精品一卡二卡| 国产精品18久久久久久久久| 国产一区二区剧情av在线| 国产精品自产自拍| 成人高清伦理免费影院在线观看| 国产成人综合在线观看| 国产成人av影院| 国产91对白在线观看九色| www.欧美精品一二区| 99久久国产综合色|国产精品| av网站一区二区三区| 国产成人精品午夜视频免费| 丝袜美腿亚洲一区| 麻豆成人91精品二区三区| 极品美女销魂一区二区三区免费| 国产一区二区三区四| 国产精品一区二区三区99| 日韩欧美专区在线| 欧美精品一区二区三区蜜桃| 欧美激情中文字幕一区二区| 欧美激情在线看| 亚洲精品美国一| 天天av天天翘天天综合网色鬼国产| 麻豆一区二区三| 国产宾馆实践打屁股91| 色哦色哦哦色天天综合| 欧美一区日本一区韩国一区| 久久久久久久久久久久久夜| 日韩理论片网站| 日韩国产欧美一区二区三区| 国产精品资源在线看| 一本久道中文字幕精品亚洲嫩| 精品视频一区二区不卡| 欧美大黄免费观看| 亚洲欧洲性图库| 日韩电影网1区2区| 成人av在线资源网站| 欧美色倩网站大全免费| 久久久精品中文字幕麻豆发布| 亚洲天堂免费看| 久久国产精品免费| 日本亚洲天堂网| 9l国产精品久久久久麻豆| 欧美日韩一级黄| 国产亚洲精品aa| 天天操天天综合网| 波多野结衣在线aⅴ中文字幕不卡| 精品视频在线免费观看| 国产日韩欧美不卡| 日韩电影一二三区| 色综合久久久久久久久| 欧美电影免费观看高清完整版| **欧美大码日韩| 九色综合狠狠综合久久| 在线视频你懂得一区| www国产成人| 亚洲va天堂va国产va久| 9i在线看片成人免费| www国产精品av| 日韩av电影一区| 色婷婷综合久色| 国产欧美日韩综合| 日本 国产 欧美色综合| 一本到三区不卡视频| 国产欧美日韩另类视频免费观看| 视频在线观看一区| 在线日韩一区二区| 国产婷婷色一区二区三区四区 | 亚洲国产精品成人综合| 日本色综合中文字幕| 91激情在线视频| 国产精品美女一区二区| 九色porny丨国产精品| 欧美精品在线一区二区| 一区二区三区欧美| 9久草视频在线视频精品| 日本一区二区三区久久久久久久久不| 蜜臀国产一区二区三区在线播放| 欧美性感一区二区三区| 亚洲欧美另类在线| 成人丝袜视频网| 久久精品男人的天堂| 久久99精品国产91久久来源| 在线电影欧美成精品| 亚洲高清免费观看| 欧美三级中文字| 亚洲国产欧美日韩另类综合| 色诱视频网站一区| 亚洲图片另类小说| 92国产精品观看| 中文字幕一区二区三区四区不卡 | 欧美日本视频在线| 亚洲国产视频在线| 欧美亚洲国产一区在线观看网站| 一区二区在线观看免费视频播放| 成人av中文字幕| 17c精品麻豆一区二区免费| 成人高清在线视频| 亚洲色图.com| 在线观看欧美精品| 亚洲成人免费影院| 欧美一区二区视频网站| 青青草97国产精品免费观看无弹窗版| 91精品欧美一区二区三区综合在| 三级成人在线视频| 日韩一区二区三区免费看| 精品一区在线看| 国产欧美一区二区精品忘忧草| 国产成人免费在线观看| 中文字幕日韩精品一区 | 久久天堂av综合合色蜜桃网| 国产一区二区三区高清播放| 久久久国产精品午夜一区ai换脸| 国产成人福利片| 亚洲图片你懂的| 欧美影院精品一区| 蜜桃精品视频在线观看| 26uuu精品一区二区| jiyouzz国产精品久久| 亚洲精品国产a久久久久久| 欧美日韩国产123区| 理论电影国产精品| 国产欧美一区二区精品性色 | 日韩一级高清毛片| 国产成人久久精品77777最新版本| 国产精品久久久久久久久晋中| 91蜜桃免费观看视频| 天天av天天翘天天综合网色鬼国产| 欧美本精品男人aⅴ天堂| 成人一区二区三区中文字幕| 一区二区欧美视频| 日韩精品一区二区三区在线观看| 国产精品影音先锋| 一区二区三区在线视频免费| 8x福利精品第一导航| 高清国产一区二区| 亚洲一卡二卡三卡四卡无卡久久| 日韩午夜在线影院| 成人黄色软件下载| 日韩电影在线看| 国产精品成人免费在线| 51久久夜色精品国产麻豆| 成人黄色一级视频| 免费精品视频最新在线| 日韩美女啊v在线免费观看| 欧美成人福利视频| 欧美在线一二三| 国产尤物一区二区| 亚洲成人一区二区在线观看| 久久精品一区蜜桃臀影院| 在线观看国产精品网站| 韩国午夜理伦三级不卡影院| 亚洲美女区一区| 久久伊人蜜桃av一区二区| 日本道在线观看一区二区| 国产精品乡下勾搭老头1| 天天影视网天天综合色在线播放| 中文字幕在线不卡视频| 精品久久久久久无| 欧美日韩国产a| 91在线精品一区二区三区| 国产精品一级片在线观看| 日韩一区欧美二区| 伊人色综合久久天天| 国产欧美va欧美不卡在线| 日韩一级在线观看| 欧美日韩在线亚洲一区蜜芽| 成人黄色777网| 国产一区中文字幕| 日韩av在线免费观看不卡| 亚洲激情第一区| 国产精品三级在线观看| 欧美tk—视频vk| 7777精品伊人久久久大香线蕉最新版 | 亚洲第一会所有码转帖| 亚洲欧美影音先锋| 亚洲国产精品ⅴa在线观看| 欧美xxxxxxxx| 3d动漫精品啪啪一区二区竹菊| 色琪琪一区二区三区亚洲区| 99re亚洲国产精品| 国产成人丝袜美腿| 国产一区二区三区久久悠悠色av| 蜜桃视频一区二区三区| 天天亚洲美女在线视频| 亚洲福利国产精品| 99re66热这里只有精品3直播| 国内外精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 中文欧美字幕免费|