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

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

?? udplstn1.pas

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

Author:       Fran鏾is PIETTE
Copyright:    You can use this software freely, at your own risks
Creation:     April 4, 1997
Version:      2.03
Object:       Demo program to show how to use TWSocket object to listen
              UDP messages from the network. Use UDPSend or any other
              program to send UDP messages.
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) 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.

Updates:
Jul 23, 1997 Adapted for Delphi 1, 2 and 3
Sep 06, 1997 Version 2.01
Sep 27, 1997 Updated for TWSocket changes
             Replace loopback address by real localhost IP addr
Dec 12, 1998 V2.02 Added icomming IP and port number display
Mar 07, 1999 V2.03 Corrected compatibility bug with Delphi 1

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit UdpLstn1;

interface

uses
  WinTypes, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FormPos, StdCtrls, WinSock, Wsocket, IniFiles;

type
  TMainForm = class(TForm)
    WSocket: TWSocket;
    StartButton: TButton;
    DataAvailableLabel: TLabel;
    InfoLabel: TLabel;
    StopButton: TButton;
    PortEdit: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    ServerEdit: TEdit;
    AnyServerCheckBox: TCheckBox;
    procedure StartButtonClick(Sender: TObject);
    procedure WSocketDataAvailable(Sender: TObject; Error: Word);
    procedure WSocketSessionConnected(Sender: TObject; Error: Word);
    procedure StopButtonClick(Sender: TObject);
    procedure WSocketSessionClosed(Sender: TObject; Error: Word);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure AnyServerCheckBoxClick(Sender: TObject);
    procedure ServerEditChange(Sender: TObject);
  private
    { D閏larations priv閑s }
    FIniFileName : String;
    FSectionName : String;
    FKeyName     : String;
    FServerAddr  : TInAddr;
  public
    { D閏larations publiques }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{$IFNDEF WIN32}
function TrimRight(Str : String) : String;
var
    i : Integer;
begin
    i := Length(Str);
    while (i > 0) and (Str[i] = ' ') do
        i := i - 1;
    Result := Copy(Str, 1, i);
end;
{$ENDIF}


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{$IFNDEF WIN32}
function TrimLeft(Str : String) : String;
var
    i : Integer;
begin
    if Str[1] <> ' ' then             { Petite optimisation: pas d'espace   }
        Result := Str
    else begin
        i := 1;
        while (i <= Length(Str)) and (Str[i] = ' ') do
            i := i + 1;
        Result := Copy(Str, i, Length(Str) - i + 1);
    end;
end;
{$ENDIF}


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{$IFNDEF WIN32}
function Trim(Str : String) : String;
begin
    Result := TrimLeft(TrimRight(Str));
end;
{$ENDIF}


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.StartButtonClick(Sender: TObject);
begin
    FServerAddr               := WSocketResolveHost(ServerEdit.Text);
    if FServerAddr.S_addr = htonl(INADDR_LOOPBACK) then begin
        { Replace loopback address by real localhost IP addr }
        FServerAddr           := WSocketResolveHost(LocalHostName);
    end;
    WSocket.Proto             := 'udp';
    WSocket.Addr              := '0.0.0.0';
    WSocket.Port              := PortEdit.Text;
    WSocket.Listen;
    PortEdit.Enabled          := FALSE;
    ServerEdit.Enabled        := FALSE;
    AnyServerCheckBox.Enabled := FALSE;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function atoi(value : string) : Integer;
var
    i : Integer;
begin
    Result := 0;
    i := 1;
    while (i <= Length(Value)) and (Value[i] = ' ') do
        i := i + 1;
    while (i <= Length(Value)) and (Value[i] in ['0'..'9']) do begin
        Result := Result * 10 + ord(Value[i]) - ord('0');
        i := i + 1;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.WSocketDataAvailable(Sender: TObject; Error: Word);
var
    Buffer : array [0..1023] of char;
    Len    : Integer;
    Src    : TSockAddrIn;
    SrcLen : Integer;
begin
    SrcLen := SizeOf(Src);
    Len    := WSocket.ReceiveFrom(@Buffer, SizeOf(Buffer), Src, SrcLen);
    if Len >= 0 then begin
        if (FServerAddr.S_addr = INADDR_ANY) or
           (FServerAddr.S_addr = Src.Sin_addr.S_addr) then begin
            Buffer[Len] := #0;
            DataAvailableLabel.Caption := IntToStr(atoi(DataAvailableLabel.caption) + 1) +
                                          '  ' + StrPas(inet_ntoa(Src.sin_addr)) +
                                          ':'  + IntToStr(ntohs(Src.sin_port)) +
                                          '--> ' + StrPas(Buffer);
        end;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.WSocketSessionConnected(Sender: TObject;
  Error: Word);
begin
    StartButton.Enabled := FALSE;
    StopButton.Enabled  := TRUE;
    InfoLabel.Caption   := 'Connected';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.StopButtonClick(Sender: TObject);
begin
    StartButton.Enabled       := TRUE;
    StopButton.Enabled        := FALSE;
    PortEdit.Enabled          := TRUE;
    ServerEdit.Enabled        := TRUE;
    AnyServerCheckBox.Enabled := TRUE;
    WSocket.Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.WSocketSessionClosed(Sender: TObject; Error: Word);
begin
    StartButton.Enabled        := TRUE;
    StopButton.Enabled         := FALSE;
    PortEdit.Enabled           := TRUE;
    ServerEdit.Enabled         := TRUE;
    AnyServerCheckBox.Enabled  := TRUE;
    InfoLabel.Caption          := 'Disconnected';
    DataAvailableLabel.Caption := '';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.FormShow(Sender: TObject);
const
    FirstTime : Boolean = TRUE;
var
    IniFile   : TIniFile;
begin
    if FirstTime then begin
        FirstTime := FALSE;
        FIniFileName     := 'UdpLstn';
        FSectionName     := 'Windows';
        FKeyName         := 'MainForm';
        LoadFormPos(Self, FIniFilename, FSectionName, FKeyName);
        DataAvailableLabel.Caption := '';
        InfoLabel.Caption          := 'Click on Start button';
        StartButton.Enabled        := TRUE;
        StopButton.Enabled         := FALSE;
        IniFile                    := TIniFile.Create(FIniFileName);
        PortEdit.Text              := IniFile.ReadString('data', 'port',   '600');
        ServerEdit.Text            := IniFile.ReadString('data', 'server', '0.0.0.0');
        IniFile.Free;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
    IniFile   : TIniFile;
begin
    SaveFormPos(Self, FIniFilename, FSectionName, FKeyName);
    IniFile := TIniFile.Create(FIniFileName);
    IniFile.WriteString('data', 'port',   PortEdit.Text);
    IniFile.WriteString('data', 'server', ServerEdit.Text);
    IniFile.Free;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.AnyServerCheckBoxClick(Sender: TObject);
begin
    if AnyServerCheckBox.Checked then
        ServerEdit.Text := '0.0.0.0';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TMainForm.ServerEditChange(Sender: TObject);
begin
    AnyServerCheckBox.Checked := (Trim(ServerEdit.Text) = '0.0.0.0');
end;


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

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费观看| 国产精品77777| 国产综合色精品一区二区三区| av激情成人网| 精品国产乱码久久久久久1区2区| 亚洲品质自拍视频| 国产酒店精品激情| 在线电影欧美成精品| 亚洲女人****多毛耸耸8| 国产一区二区视频在线| 91麻豆精品国产91久久久更新时间 | 欧美一区二区三区精品| 亚洲丝袜制服诱惑| 国产成人h网站| 日韩视频123| 天堂资源在线中文精品| 色综合久久99| 亚洲婷婷综合色高清在线| 国产激情一区二区三区四区| 欧美成人一区二区三区| 天天综合色天天| 欧美高清激情brazzers| 亚洲一区二区精品3399| 色一情一伦一子一伦一区| 国产精品久久久久影院老司 | 精品少妇一区二区三区视频免付费| 一区二区三区四区视频精品免费| 成人激情免费电影网址| 欧美激情综合五月色丁香小说| 国产一区二区视频在线| 久久美女艺术照精彩视频福利播放 | 国产v综合v亚洲欧| www欧美成人18+| 国产乱码精品一区二区三区忘忧草 | 天天综合色天天| 欧美日韩极品在线观看一区| 亚洲综合在线第一页| 在线免费观看成人短视频| 亚洲黄一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃 | 久久婷婷久久一区二区三区| 久久se精品一区精品二区| 精品免费国产一区二区三区四区| 久久成人免费电影| 精品成人在线观看| 国产精品77777| 亚洲欧美在线高清| 在线日韩av片| 免费观看成人av| 精品国产乱码久久久久久图片 | 色哟哟欧美精品| 亚洲小少妇裸体bbw| 91精品国产综合久久婷婷香蕉| 日韩影院在线观看| 欧美不卡视频一区| 成人午夜在线播放| 一区二区三区国产| 欧美一级精品在线| 国产91色综合久久免费分享| 国产精品福利电影一区二区三区四区 | 欧美成人一级视频| 成人综合在线视频| 亚洲一区二区三区精品在线| 日韩欧美成人午夜| 99re亚洲国产精品| 丝袜亚洲另类丝袜在线| 久久久欧美精品sm网站| 一本在线高清不卡dvd| 秋霞电影一区二区| 国产精品麻豆99久久久久久| 欧美日韩精品一区二区三区蜜桃 | 精品亚洲免费视频| 国产精品你懂的在线欣赏| 欧美在线free| 国产精品一区二区久久不卡| 一区二区三区成人在线视频 | 日韩你懂的在线观看| 成人免费黄色在线| 美洲天堂一区二卡三卡四卡视频| 中国色在线观看另类| 91精品国产色综合久久不卡电影 | 亚洲精品久久久蜜桃| 亚洲精品在线免费观看视频| 色天天综合久久久久综合片| 国产精选一区二区三区| 午夜影院久久久| 成人免费在线视频| 久久综合狠狠综合久久综合88 | 成人国产精品免费| 日本不卡视频一二三区| 亚洲黄色录像片| 国产精品美女久久久久久久久| 精品国精品国产| 欧美精品丝袜中出| 在线观看日产精品| 97久久久精品综合88久久| 国产成人自拍高清视频在线免费播放| 偷拍与自拍一区| 一个色妞综合视频在线观看| 国产精品系列在线| 国产女主播一区| 久久看人人爽人人| 久久人人超碰精品| 国产丝袜美腿一区二区三区| 欧美大片免费久久精品三p | 青青草成人在线观看| 亚洲国产日韩综合久久精品| 亚洲欧美乱综合| 18欧美乱大交hd1984| 欧美激情一区二区在线| 国产亚洲精久久久久久| 亚洲精品在线一区二区| 久久综合九色综合欧美就去吻| 亚洲精品一线二线三线| 精品国产欧美一区二区| 久久久久久久免费视频了| 日韩欧美电影一区| 精品日韩av一区二区| 久久久久久久综合色一本| 欧美激情一区在线观看| 国产精品国产自产拍高清av王其| 欧美激情中文字幕| 亚洲欧洲av在线| 亚洲动漫第一页| 日韩高清不卡在线| 久久66热偷产精品| 国产成人免费视频网站| av在线播放一区二区三区| 色婷婷综合中文久久一本| 欧美亚洲动漫另类| 日韩一区二区三区免费看| 欧美成人性福生活免费看| 国产欧美一区二区精品性色超碰| 国产精品久久久久久妇女6080| 亚洲欧美国产三级| 日韩极品在线观看| 国产一区二区三区高清播放| 成人影视亚洲图片在线| 色天天综合久久久久综合片| 日韩一级精品视频在线观看| 国产日产欧美一区| 亚洲一区二区av在线| 久久99精品久久只有精品| 成人高清视频免费观看| 欧美日韩国产首页在线观看| 精品日韩在线一区| 亚洲人成网站色在线观看| 天堂资源在线中文精品| 国产91丝袜在线18| 欧美日本一道本| 欧美国产日韩在线观看| 午夜久久福利影院| 国产激情精品久久久第一区二区| 日本道免费精品一区二区三区| 91精品免费观看| 国产精品美女www爽爽爽| 亚洲一区二区综合| 国产一区二区久久| 欧美日韩免费一区二区三区视频| 久久婷婷国产综合国色天香| 亚洲一区二区三区在线看| 经典三级视频一区| 欧美优质美女网站| 欧美国产日韩亚洲一区| 日韩成人av影视| 91在线一区二区三区| 日韩精品一区二区三区中文精品| 亚洲男人电影天堂| 国产sm精品调教视频网站| 日韩欧美一二三四区| 一区二区三区蜜桃网| 成人丝袜高跟foot| 欧美zozozo| 日本人妖一区二区| 在线精品视频免费播放| 中文字幕av免费专区久久| 久久精品国产网站| 7777精品久久久大香线蕉| 一区二区三区精品视频| 91在线免费看| 中文字幕一区日韩精品欧美| 国产一区在线看| 日韩午夜激情视频| 三级欧美在线一区| 欧美日韩国产精选| 亚洲精品成人在线| 9人人澡人人爽人人精品| 国产视频视频一区| 国产一区二区成人久久免费影院 | 欧美午夜片在线看| 亚洲欧美激情小说另类| av福利精品导航| 亚洲欧美在线另类| 97超碰欧美中文字幕| 中文字幕中文字幕一区| 成人a级免费电影| 国产精品久久久久桃色tv| 成人精品一区二区三区中文字幕| 久久久久久久久久看片| 国产剧情一区在线|