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

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

?? recv1.pas

?? 包含常用Internet協(xié)議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
字號(hào):
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  Simple server program which just listen for clients and display
              all incomming data.
EMail:        francois.piette@pophost.eunet.be    francois.piette@rtfm.be
              http://www.rtfm.be/fpiette
Creation:     Sep 29, 1998
Version:      1.03
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 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.

History:
Oct 28, 1998  V1.01 Added Linger and Banner checkboxes.
Dec 30, 1998  V1.02 Remove trailing CR/LF on data receive.
Mar 07, 1999  V1.03 Adapted for Delphi 1

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit Recv1;

interface

uses
  WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, WSocket, StdCtrls, ExtCtrls, IniFiles;

const
  WM_DESTROY_SOCKET = WM_USER + 1;

type
  TRecvForm = class(TForm)
    Panel1: TPanel;
    DisplayMemo: TMemo;
    Label1: TLabel;
    PortEdit: TEdit;
    ActionButton: TButton;
    WSocket1: TWSocket;
    CloseAllButton: TButton;
    Label2: TLabel;
    LingerCheckBox: TCheckBox;
    BannerCheckBox: TCheckBox;
    LineModeOnButton: TButton;
    LineOffButton: TButton;
    procedure ActionButtonClick(Sender: TObject);
    procedure PortEditChange(Sender: TObject);
    procedure WSocket1SessionAvailable(Sender: TObject; Error: Word);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CloseAllButtonClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure LineModeOnButtonClick(Sender: TObject);
    procedure LineOffButtonClick(Sender: TObject);
  private
    FIniFileName : String;
    FInitialized : Boolean;
    FClients     : TList;
    procedure ClientDataAvailable(Sender : TObject; Error : Word);
    procedure ClientSessionClosed(Sender: TObject; Error: Word);
    procedure Display(Msg : String);
    procedure WMDestroySocket(var msg: TMessage); message WM_DESTROY_SOCKET;
  end;

var
  RecvForm: TRecvForm;

implementation

{$R *.DFM}

const
    SectionWindow   = 'RecvForm';
    KeyTop          = 'Top';
    KeyLeft         = 'Left';
    KeyWidth        = 'Width';
    KeyHeight       = 'Height';
    SectionData     = 'Data';
    KeyPort         = 'Port';
    KeyLinger       = 'Linger';
    KeyBanner       = 'SendBanner';


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.FormCreate(Sender: TObject);
begin
    FIniFileName := LowerCase(ExtractFileName(Application.ExeName));
    FIniFileName := Copy(FIniFileName, 1, Length(FIniFileName) - 3) + 'ini';
    FClients     := TList.Create;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.FormDestroy(Sender: TObject);
begin
    if Assigned(FClients) then begin
        FClients.Destroy;
        FClients := nil;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.FormShow(Sender: TObject);
var
    IniFile : TIniFile;
begin
    if not FInitialized then begin
        FInitialized := TRUE;
        IniFile      := TIniFile.Create(FIniFileName);
        Width        := IniFile.ReadInteger(SectionWindow, KeyWidth,  Width);
        Height       := IniFile.ReadInteger(SectionWindow, KeyHeight, Height);
        Top          := IniFile.ReadInteger(SectionWindow, KeyTop,
                                            (Screen.Height - Height) div 2);
        Left         := IniFile.ReadInteger(SectionWindow, KeyLeft,
                                            (Screen.Width  - Width)  div 2);
        PortEdit.Text := IniFile.ReadString(SectionData, KeyPort, 'telnet');
        LingerCheckBox.Checked := Boolean(IniFile.ReadInteger(SectionData, KeyLinger, 0));
        BannerCheckBox.Checked := Boolean(IniFile.ReadInteger(SectionData, KeyBanner, 1));
        Label2.Caption := '';
        IniFile.Destroy;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
    IniFile : TIniFile;
begin
    IniFile := TIniFile.Create(FIniFileName);
    IniFile.WriteInteger(SectionWindow, KeyTop,    Top);
    IniFile.WriteInteger(SectionWindow, KeyLeft,   Left);
    IniFile.WriteInteger(SectionWindow, KeyWidth,  Width);
    IniFile.WriteInteger(SectionWindow, KeyHeight, Height);
    IniFile.WriteString(SectionData,    KeyPort,   PortEdit.text);
    IniFile.WriteInteger(SectionData,   KeyLinger, Ord(LingerCheckBox.Checked));
    IniFile.WriteInteger(SectionData,   KeyBanner, Ord(BannerCheckBox.Checked));
    IniFile.Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.Display(Msg : String);
begin
    if DisplayMemo.Lines.Count > 200 then   { Prevent TMemo overflow }
        DisplayMemo.Clear;
    DisplayMemo.Lines.Add(Msg);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.ActionButtonClick(Sender: TObject);
begin
    if ActionButton.Caption = '&Start' then begin
        WSocket1.Addr     := '0.0.0.0';
        WSocket1.Port     := PortEdit.Text;
        WSocket1.Proto    := 'tcp';
        WSocket1.Listen;
        ActionButton.Caption := '&Stop';
        Display('Listening for clients');
    end
    else begin
        WSocket1.Close;
        ActionButton.Caption := '&Start';
        Display('Not listening for clients');
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.PortEditChange(Sender: TObject);
begin
    WSocket1.Close;
    ActionButton.Caption := '&Start';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.WSocket1SessionAvailable(Sender: TObject; Error: Word);
var
    NewClient : TWSocket;
begin
    Display('Client connected');
    Label2.Caption := '';
    NewClient := TWSocket.Create(nil);
    FClients.Add(NewClient);
    NewClient.LineMode            := TRUE;
    NewClient.OnDataAvailable     := ClientDataAvailable;
    NewClient.OnSessionClosed     := ClientSessionClosed;
    NewClient.HSocket             := WSocket1.Accept;
    if LingerCheckBox.Checked then
        NewClient.LingerOnOff     := wsLingerOn
    else
        NewClient.LingerOnOff     := wsLingerOff;
    NewClient.LingerTimeout       := 300;
    NewClient.SetLingerOption;
    if BannerCheckBox.Checked then
        NewClient.SendStr('Hello !' + #13#10);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.ClientDataAvailable(Sender : TObject; Error : Word);
var
    Buf : array [0..127] of char;
    Len : Integer;
begin
    Len := TWSocket(Sender).Receive(@Buf, Sizeof(Buf) - 1);
    if Len <= 0 then
        Exit;
    { Remove any trailing CR/LF}
    while (Len > 0) and (Buf[Len - 1] in [#13, #10]) do
        Dec(Len);
    { Nul terminate the data }
    Buf[Len] := #0;
    Display('DataAvailable: ''' + StrPas(@Buf) + '''');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.ClientSessionClosed(Sender: TObject; Error: Word);
var
    Cli : TWSocket;
    Itm : Integer;
begin
    Cli := Sender as TWSocket;
    Display('Client diconnected');

    Itm := FClients.IndexOf(Cli);
    if Itm >= 0 then
        FClients.Delete(Itm);
    { We can't destroy a TWSocket from a SessionClosed event handler.   }
    { So we post a message to delay destruction until we are out of the }
    { message handler.                                                  }
    PostMessage(Handle, WM_DESTROY_SOCKET, 0, LongInt(Cli));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.WMDestroySocket(var msg: TMessage);
begin
    TWSocket(msg.LParam).Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.CloseAllButtonClick(Sender: TObject);
begin
    Display('Disconnecting clients');
    while FClients.Count > 0 do
        TWSocket(FClients.Items[0]).Close;
    Display('All clients disconnected');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.LineModeOnButtonClick(Sender: TObject);
var
    I : Integer;
begin
    for I := 0 to FClients.Count - 1 do
        TWSocket(FClients.Items[0]).LineMode := TRUE;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRecvForm.LineOffButtonClick(Sender: TObject);
var
    I : Integer;
begin
    for I := 0 to FClients.Count - 1 do
        TWSocket(FClients.Items[0]).LineMode := FALSE;
end;


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

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情在线激情| 欧美高清在线视频| 欧洲精品在线观看| 99久久精品99国产精品| 懂色av噜噜一区二区三区av| 国产自产2019最新不卡| 经典一区二区三区| 激情深爱一区二区| 国产成人在线免费观看| 国产精品亚洲视频| 成人av午夜影院| 91一区在线观看| 在线观看一区不卡| 欧美精品aⅴ在线视频| 欧美一区二区三区免费大片| 7777精品伊人久久久大香线蕉的| 欧美探花视频资源| 欧美一二三四在线| 久久蜜桃香蕉精品一区二区三区| 国产人成一区二区三区影院| 国产精品久久久久久久久免费丝袜| 国产午夜亚洲精品不卡| 成人免费一区二区三区在线观看| 亚洲欧美另类在线| 日韩av不卡在线观看| 极品销魂美女一区二区三区| 成人深夜福利app| 欧美色图在线观看| 日韩精品一区二区三区中文不卡| 久久影院午夜片一区| 国产亚洲欧美日韩日本| 中文字幕亚洲精品在线观看| 亚洲 欧美综合在线网络| 美女视频网站久久| 94-欧美-setu| 91精品婷婷国产综合久久竹菊| 久久久影视传媒| 尤物在线观看一区| 精品一区精品二区高清| 97久久超碰国产精品| 日韩一区二区免费视频| 亚洲视频你懂的| 精品午夜一区二区三区在线观看| 91麻豆精品视频| 精品国产一区二区三区av性色 | 337p亚洲精品色噜噜噜| 久久一区二区视频| 亚洲1区2区3区4区| 成人免费视频视频在线观看免费| 91精品国产免费久久综合| 亚洲欧洲日产国码二区| 久久99精品国产.久久久久| 色狠狠色狠狠综合| 国产色产综合色产在线视频| 日韩国产在线观看| 在线视频国内自拍亚洲视频| 欧美国产精品劲爆| 精品一二三四区| 欧美一级久久久| 亚洲国产日韩一区二区| 色综合久久99| 国产精品美女www爽爽爽| 精品中文字幕一区二区小辣椒 | 久久在线观看免费| 免费成人小视频| 日本韩国欧美一区二区三区| 国产精品免费人成网站| 狠狠色丁香久久婷婷综| 日韩女优电影在线观看| 午夜欧美视频在线观看| 欧美亚洲一区二区在线观看| 综合网在线视频| 99r精品视频| 亚洲欧美一区二区三区国产精品| 成人午夜激情在线| 国产视频一区在线观看| 黑人巨大精品欧美一区| 精品少妇一区二区三区在线播放| 蜜臀99久久精品久久久久久软件| 制服丝袜激情欧洲亚洲| 丝袜美腿成人在线| 91精品国产全国免费观看| 日韩av成人高清| 欧美成人艳星乳罩| 国内精品免费**视频| 久久久av毛片精品| 不卡的电影网站| 日韩美女久久久| 欧美视频中文一区二区三区在线观看| 亚洲一区二区五区| 欧美久久高跟鞋激| 久久99国产精品久久99| 国产日韩欧美麻豆| www.欧美精品一二区| 亚洲另类中文字| 欧美美女一区二区三区| 乱中年女人伦av一区二区| 久久日一线二线三线suv| gogogo免费视频观看亚洲一| 成人免费一区二区三区在线观看| 欧美性极品少妇| 精品一区二区三区影院在线午夜| 国产日韩欧美综合一区| 91免费观看视频在线| 日本不卡视频一二三区| 久久久亚洲精品一区二区三区| 99久久精品免费看国产 | 欧美mv日韩mv亚洲| 成人精品视频一区二区三区| 一区二区高清免费观看影视大全| 欧美肥胖老妇做爰| 粉嫩13p一区二区三区| 亚洲18色成人| 欧美国产乱子伦| 日韩一卡二卡三卡四卡| 成人ar影院免费观看视频| 日韩影视精彩在线| 国产日产欧产精品推荐色| 欧美美女bb生活片| 粉嫩绯色av一区二区在线观看| 天堂蜜桃一区二区三区| 国产精品麻豆视频| 欧美不卡在线视频| 欧美午夜精品久久久久久孕妇| 国产精品综合二区| 视频一区中文字幕国产| 国产欧美一区在线| 日韩免费高清av| 欧美日韩一级二级| av电影在线观看完整版一区二区| 奇米影视一区二区三区小说| 亚洲免费av在线| 国产精品视频麻豆| 久久日韩精品一区二区五区| 欧美日韩国产高清一区| 91免费观看在线| 国产成人精品亚洲日本在线桃色| 日韩电影在线观看一区| 一区二区国产视频| 亚洲黄色免费电影| 亚洲精品国产a| 国产精品久久久久久久午夜片| 久久久久久免费毛片精品| 69堂精品视频| 欧美精品在线视频| 欧美视频在线观看一区二区| 色综合久久88色综合天天免费| 成人一级黄色片| 国产成人免费视频网站| 国产精一区二区三区| 韩国女主播一区| 国产综合成人久久大片91| 麻豆精品视频在线观看免费| 日本午夜精品视频在线观看| 亚洲成av人片一区二区梦乃 | 欧美电影免费观看完整版| 7777精品久久久大香线蕉| 欧美日韩一卡二卡三卡| 欧美色图免费看| 欧美高清视频在线高清观看mv色露露十八| 色综合久久久久网| 欧美私人免费视频| 这里是久久伊人| 精品人在线二区三区| 久久综合一区二区| 国产欧美久久久精品影院| 国产精品午夜在线观看| 日韩美女精品在线| 日韩精品一级中文字幕精品视频免费观看 | 粉嫩av一区二区三区在线播放 | 亚洲免费av网站| 艳妇臀荡乳欲伦亚洲一区| 丝袜脚交一区二区| 狠狠色丁香久久婷婷综合_中| 国产精品91一区二区| 91猫先生在线| 69堂国产成人免费视频| 久久精品一区四区| 亚洲免费观看高清完整版在线观看| 夜夜夜精品看看| 美女一区二区三区| 成人av资源在线观看| 国产一区二区三区电影在线观看| 成人手机电影网| 欧美日韩综合不卡| 国产精品免费看片| 人人爽香蕉精品| 777欧美精品| 欧美激情资源网| 欧美亚洲高清一区| 精品国产乱码久久久久久久久| 国产亚洲欧美中文| 性做久久久久久久免费看| 国产曰批免费观看久久久| 91亚洲男人天堂| 欧美一区二区三区免费大片| 国产精品国产三级国产| 丝袜亚洲另类欧美| 91视频91自| 久久久久久久久蜜桃|