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

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

?? tnsrv1.pas

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

Copyright:    Fran鏾is PIETTE
Creation:     April 1996
Version:      1.25
Description:  TnSrv implement a (very basic) Telnet server (daemon)
              Compatible with both Delphi 1 and Delphi 2
              Uses TWSocket to communicate with WinSock
EMail:        francois.piette@pophost.eunet.be    francois.piette@rtfm.be
              http://www.rtfm.be/fpiette
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1996, 1997, 1998, 1999 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.

Updates:
Sep 18, 1996 Added resize event and about box
Mar 19, 1997 V1.10 Use enhanced TWSocket object
Jul 22, 1997 V1.20 Adapted to Delphi 3
Sep 27, 1997 Adapted for TWSocket converted to support C++Builder
Oct 03, 1997 V1.22 Added a $DEFINE POP3 to simulate a POP3 server
                   Added an editbox to select the server port
Oct 09, 1997 Added a $DEFINE SMTP to simulate a SMTP server
Oct 11, 1997 V1.23 Added PortNum to client to tell him what he has to serve
Jul 30, 1998 V1.24 Added some code to the dummy SMTP server
Aug 20, 1999 V1.25 Added some comments, added Restartserver procedure.

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit Tnsrv1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, WSocket, WinSock, StdCtrls, TnSrv2;

const
  TnSrvVersion = 125;

type
  { TClient class is used to handle client connections. A TClient is    }
  { instanciated for each client which connect.                         }
  { TnSrv keep track of all connected clients using Clients variable in }
  { TServerForm (see below).                                            }
  { TClient class will dynamically create a TClientForm from his        }
  { constructor. Since TClientForm include a TWSocket, a new TWSocket   }
  { is also created dynamically and automaticcaly when the form is      }
  { created.                                                            }
  TClient = class(TObject)
    Form      : TClientForm;
    Peer      : String;
    constructor Create(AOwner : TComponent);
    destructor  Destroy; override;
  end;

  TServerForm = class(TForm)
    Memo: TMemo;
    QuitButton: TButton;
    AboutButton: TButton;
    SrvSocket: TWSocket;
    PortLabel: TLabel;
    PortEdit: TEdit;
    ChangePortButton: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Display(Msg : String);
    procedure QuitButtonClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure AboutButtonClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure SrvSocketSessionAvailable(Sender: TObject; Error: Word);
    procedure SrvSocketSessionClosed(Sender: TObject; Error: Word);
    procedure ChangePortButtonClick(Sender: TObject);
  protected
    procedure WMDisconnect(var msg: TMessage); message WM_DISCONNECT;
    procedure RestartServer;
  public
    Clients  : TList;   { List of all TClient object (one per connection) }
  end;

var
  ServerForm: TServerForm;

implementation

{$R *.DFM}
{DEFINE Debug}     { Add or remove dollar sign before Debug to }
                   { generate code for debug message output    }


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure DebugString(Msg : String);
const
    Cnt : Integer = 0;
{$IFDEF Debug}
var
    Buf : String[20];
{$ENDIF}
begin
{$IFDEF Debug}
    Cnt := Cnt + 1;
    Buf := IntToHex(Cnt, 4) + ' ' + #0;
    OutputDebugString(@Buf[1]);
{$IFDEF WIN32}
    OutputDebugString(PChar(Msg));
{$ELSE}
    if Length(Msg) < High(Msg) then
        Msg[Length(Msg) + 1] := #0;

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


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TClient.Create(AOwner : TComponent);
begin
     Application.CreateForm(TClientForm, Form);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TClient.Destroy;
begin
    Form.Release;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.FormCreate(Sender: TObject);
begin
    Memo.Clear;
    Clients := TList.Create;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.FormActivate(Sender: TObject);
const
    FirstTime : Boolean = TRUE;
begin
    if FirstTime then begin
        FirstTime := FALSE;
        RestartServer;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.RestartServer;
begin
    with SrvSocket do begin
        Close;
        Addr  := '0.0.0.0';  { Use any interface for listening }
        Proto := 'tcp';
        Port  := PortEdit.Text;
        Listen;
    end;
    Memo.Clear;
    Display(PortEdit.Text + ' Server Ready' + #13 + #10);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.Display(Msg : String);
var
    Start, Stop : Integer;
begin
    if Memo.Lines.Count = 0 then
        Memo.Lines.Add('');

    Start := 1;
    Stop  := Pos(#13, Msg);
    if Stop = 0 then
        Stop := Length(Msg) + 1;
    while Start <= Length(Msg) do begin
        Memo.Lines.Strings[Memo.Lines.Count - 1] := Memo.Lines.Strings[Memo.Lines.Count - 1] + Copy(Msg, Start, Stop - Start);
        if Msg[Stop] = #13 then begin
            Memo.Lines.Add('');
            SendMessage(Memo.Handle, WM_KEYDOWN, VK_UP, 1);
        end;
        Start := Stop + 1;
        if Start > Length(Msg) then
            Break;
        if Msg[Start] = #10 then
           Start := Start + 1;
        Stop := Start;
        while (Stop <= Length(Msg)) and (Msg[Stop] <> #13) do
            Stop := Stop + 1;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.SrvSocketSessionAvailable(Sender: TObject; Error : word);
var
    NewHSocket : TSocket;
    PeerName   : TSockAddrIn;
    Client     : TClient;
begin
    NewHSocket             := SrvSocket.Accept;
    Client                 := TClient.Create(Self);
    Client.Form.Reference  := Client;
    Client.Form.PortNum    := SrvSocket.PortNum;
    Client.Form.AcceptForm := Self;
    Client.Form.Socket.Dup(NewHSocket);
    Client.Form.Socket.GetPeerName(PeerName, Sizeof(PeerName));
    Client.Peer := StrPas(inet_ntoa(PeerName.Sin_addr));
    Display('Remote ' + Client.Peer + ' connected' + #13 + #10);
    Client.Form.Caption := Client.Peer;
    Client.Form.Show;
    Clients.Add(Client);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.WMDisconnect(var msg: TMessage);
var
    Client : TClient;
    Why    : String;
begin
    case msg.wParam of
    DISCONNECT_SELF   : Why := 'has been disconnected';
    DISCONNECT_REMOTE : Why := 'has closed the connection';
    else                Why := 'disconnected';
    end;

    Client := TCLient(msg.lParam);
    Display('Remote ' + Client.Peer + ' ' + Why + #13 + #10);
    Client.Form.Socket.Shutdown(2);
    Client.Form.Socket.Close;
    Client.Form.Visible := FALSE;
    Client.Form.Release;
    Clients.Remove(Client);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.SrvSocketSessionClosed(Sender: TObject; Error : word);
begin
    Display(#13 + #10 + '*** Remote has closed ***' + #13 + #10);
    if SrvSocket.State = wsOpened then
        SrvSocket.Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.QuitButtonClick(Sender: TObject);
begin
    SrvSocket.Close;
    Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.AboutButtonClick(Sender: TObject);
var
    Buf : String;
begin
    Buf := 'TnSRV  V' +
           IntToStr(TnSrvVersion div 100) + '.' +
           IntToStr(TnSrvVersion mod 100) + ' ' +
{$IFDEF WIN32}
           '32 bit' +
{$ELSE}
           '16 bit' +
{$ENDIF}
           '  Created march 19, 1997' + #10 + #10 +
           'Free Software, Copyright Fran鏾is Piette' + #10 + #10 +
           'francois.piette@pophost.eunet.be  http://www.rtfm.be/fpiette' + #0;
    Application.MessageBox(@Buf[1], 'About TnSrv', MB_OK);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Adjust the position for each control in the form as the user resize it   *}
procedure TServerForm.FormResize(Sender: TObject);
begin
    Memo.Height          := ClientHeight - QuitButton.Height - 20;
    QuitButton.Left      := ClientWidth - QuitButton.Width - 10;
    AboutButton.Left     := QuitButton.Left - AboutButton.Width - 10;
    QuitButton.Top       := ClientHeight - QuitButton.Height - 10;
    AboutButton.Top      := QuitButton.Top;
    ChangePortButton.Top := QuitButton.Top;
    PortEdit.Top         := QuitButton.Top;
    PortLabel.Top        := QuitButton.Top + 4;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TServerForm.ChangePortButtonClick(Sender: TObject);
begin
    RestartServer;
end;


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

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久妇女6080| 国产69精品久久久久毛片| 国产精品久久久久三级| 久久久久久一级片| 久久这里都是精品| 精品久久久久一区| 精品电影一区二区| 国产网站一区二区| 国产区在线观看成人精品| 欧美激情在线观看视频免费| 国产欧美精品区一区二区三区 | 日本aⅴ亚洲精品中文乱码| 午夜亚洲国产au精品一区二区| 亚洲国产另类av| 亚洲成人1区2区| 久久国产精品第一页| 国产成人精品1024| 91亚洲国产成人精品一区二区三| 色婷婷亚洲综合| 欧美狂野另类xxxxoooo| 日韩免费高清视频| 日本一区二区三区视频视频| 日韩理论片在线| 天天色天天操综合| 国产精品资源在线观看| 97久久精品人人澡人人爽| 欧美日本国产视频| 精品国产一区二区三区不卡| 国产精品国模大尺度视频| 尤物视频一区二区| 国内不卡的二区三区中文字幕| 99热在这里有精品免费| 欧美日韩高清影院| 国产亚洲成年网址在线观看| 亚洲精选视频在线| 毛片一区二区三区| 91成人看片片| 久久久久高清精品| 亚洲成a人片在线观看中文| 国产自产2019最新不卡| 欧美性生活影院| 中文无字幕一区二区三区| 五月天视频一区| 99精品热视频| 久久久夜色精品亚洲| 亚洲第一综合色| zzijzzij亚洲日本少妇熟睡| 88在线观看91蜜桃国自产| 久久女同精品一区二区| 亚洲第一久久影院| 99久久久精品| 国产欧美一区二区三区在线老狼| 亚洲免费色视频| 国产成人免费xxxxxxxx| 日韩一级在线观看| 一区二区在线观看不卡| 国产盗摄视频一区二区三区| 日韩欧美国产综合一区| 日韩精品亚洲专区| 色哟哟在线观看一区二区三区| 久久久久久久精| 蜜臀va亚洲va欧美va天堂| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | www.成人网.com| 久久久噜噜噜久久人人看 | 26uuu精品一区二区三区四区在线| 亚洲免费视频成人| 97国产精品videossex| 国产精品色哟哟网站| 豆国产96在线|亚洲| 久久精品一二三| 久久国产麻豆精品| 精品对白一区国产伦| 国模娜娜一区二区三区| 亚洲精品在线网站| 国产一区二区在线影院| 久久综合色婷婷| 美国毛片一区二区| 久久综合九色综合欧美就去吻| 日韩成人免费在线| 色婷婷综合久久久| 一区二区三区在线免费播放| 日本电影欧美片| 一区二区三区在线高清| 91国在线观看| 日韩黄色免费电影| 精品入口麻豆88视频| 国产精品亚洲一区二区三区妖精| 久久久www成人免费无遮挡大片 | 国产欧美精品一区二区色综合朱莉| 国内精品国产成人国产三级粉色| 久久亚洲精精品中文字幕早川悠里| 加勒比av一区二区| 国产精品美女一区二区三区| 91免费精品国自产拍在线不卡| 亚洲国产日产av| 欧美一区三区二区| 国产精品一区二区在线观看网站| 国产精品久久久久久一区二区三区| 91麻豆蜜桃一区二区三区| 午夜伊人狠狠久久| 久久一区二区三区国产精品| 国产99精品在线观看| 一区二区三区成人| 欧美不卡一区二区三区| 波多野结衣一区二区三区 | ●精品国产综合乱码久久久久 | 免费成人av在线| 国产亚洲欧美色| 91电影在线观看| 极品美女销魂一区二区三区免费| 国产蜜臀av在线一区二区三区| 色综合久久88色综合天天免费| 亚瑟在线精品视频| 久久久久久久久久久久久女国产乱| bt欧美亚洲午夜电影天堂| 日韩va欧美va亚洲va久久| 欧美激情在线看| 欧美一区二区三区四区在线观看| 丁香婷婷深情五月亚洲| 五月激情综合网| 国产精品电影院| 精品人伦一区二区色婷婷| 欧美在线观看一区二区| 国产91精品精华液一区二区三区 | 91精品啪在线观看国产60岁| 91网页版在线| 国产精品一区免费在线观看| 图片区小说区国产精品视频 | 在线免费观看日本一区| 国产成人av一区二区三区在线观看| 婷婷一区二区三区| 亚洲人成亚洲人成在线观看图片| 精品国产乱码久久久久久闺蜜 | 精品一区二区三区在线观看 | 日韩丝袜情趣美女图片| 欧美性猛交xxxx黑人交| 成人性生交大合| 国产精品一区二区久久不卡 | 99久久er热在这里只有精品15| 久久99国产精品久久| 亚洲午夜精品在线| 亚洲三级免费观看| 国产精品传媒视频| 中文字幕在线不卡| 中文欧美字幕免费| 国产精品初高中害羞小美女文| 久久精品人人做人人综合 | 国产91精品久久久久久久网曝门| 日本女人一区二区三区| 亚洲大尺度视频在线观看| 亚洲在线免费播放| 香蕉成人伊视频在线观看| 亚洲国产欧美在线| 午夜国产精品一区| 日韩高清中文字幕一区| 日本不卡123| 精品一区二区精品| 日韩电影在线观看电影| 日本在线不卡一区| 日本欧洲一区二区| 日日夜夜免费精品视频| 天天综合天天做天天综合| 亚洲国产精品一区二区www| 一区二区免费在线播放| 亚洲理论在线观看| 亚洲精品国产成人久久av盗摄| 亚洲日本成人在线观看| 亚洲精品欧美综合四区| 日韩中文字幕不卡| 久久电影国产免费久久电影 | 亚洲一区在线观看网站| 三级不卡在线观看| 国产一二三精品| 国产激情91久久精品导航| 成人免费观看av| 色丁香久综合在线久综合在线观看| av一区二区三区在线| 一本色道久久加勒比精品| 在线观看亚洲成人| 欧美日韩在线观看一区二区| 日韩亚洲电影在线| 国产午夜亚洲精品午夜鲁丝片| 国产精品久久久久久久久快鸭| 天涯成人国产亚洲精品一区av| 国产乱码一区二区三区| 日本精品裸体写真集在线观看| 欧美另类久久久品| 久久久另类综合| 亚洲精品视频在线观看免费| 日韩国产在线观看一区| 久久精品国产亚洲aⅴ| 高清不卡一二三区| 色综合夜色一区| 日韩欧美123| 一区二区国产视频| 国产麻豆视频精品| 欧美午夜影院一区| 国产欧美精品一区二区色综合 | 午夜av电影一区|