home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / Runimage / Delphi50 / Demos / FastNet / Udp / udpdem.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  3.8 KB  |  130 lines

  1. ///////////////////////////////////////////////////////////////////////////
  2. //                                                                       //
  3. // Copyright ⌐ 1997-1998, NetMasters, L.L.C                              //
  4. //  - All rights reserved worldwide. -                                   //
  5. //  Portions may be Copyright ⌐ Inprise.                                 //
  6. //                                                                       //
  7. // UDP Demo Unit 1:  (UNIT1.PAS)                                         //
  8. //                                                                       //
  9. // DESCRIPTION:                                                          //
  10. //                                                                       //
  11. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY //
  12. // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE   //
  13. // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR //
  14. // PURPOSE.                                                              //
  15. //                                                                       //
  16. ///////////////////////////////////////////////////////////////////////////
  17. //
  18. // Revision History
  19. //
  20. //                                                                       //
  21. ///////////////////////////////////////////////////////////////////////////
  22. unit UDPDem;
  23.  
  24. interface
  25.  
  26. uses
  27.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  28.   StdCtrls, ComCtrls, NMUDP, ExtCtrls;
  29.  
  30. type
  31.   TForm1 = class(TForm)
  32.     NMUDP1: TNMUDP;
  33.     PageControl1: TPageControl;
  34.     TabSheet1: TTabSheet;
  35.     TabSheet2: TTabSheet;
  36.     Edit1: TEdit;
  37.     Edit2: TEdit;
  38.     Label1: TLabel;
  39.     Label2: TLabel;
  40.     Edit3: TEdit;
  41.     Label3: TLabel;
  42.     Button1: TButton;
  43.     Panel1: TPanel;
  44.     Button2: TButton;
  45.     Memo1: TMemo;
  46.     StatusBar1: TStatusBar;
  47.     procedure Button1Click(Sender: TObject);
  48.     procedure Button2Click(Sender: TObject);
  49.     procedure NMUDP1Status(Sender: TComponent; status: String);
  50.     procedure NMUDP1DataSend(Sender: TObject);
  51.     procedure NMUDP1InvalidHost(var handled: Boolean);
  52.     procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
  53.       FromIP: String; Port: Integer);
  54.   private
  55.     { Private declarations }
  56.   public
  57.     { Public declarations }
  58.   end;
  59.  
  60. var
  61.   Form1: TForm1;
  62.  
  63. implementation
  64.  
  65. {$R *.DFM}
  66.  
  67. procedure TForm1.Button1Click(Sender: TObject);
  68. var
  69.   MyStream: TMemoryStream;
  70.   TmpStr: String;
  71. Begin
  72.   NMUDP1.ReportLevel := Status_Basic;
  73.   NMUDP1.RemoteHost := Edit1.Text;
  74.   NMUDP1.RemotePort := StrToInt(Edit2.Text);
  75.   TmpStr := Edit3.Text;
  76.   MyStream := TMemoryStream.Create;
  77.   try
  78.     MyStream.Write(TmpStr[1], Length(Edit3.Text));
  79.     NMUDP1.SendStream(MyStream);
  80.   finally
  81.     MyStream.Free;
  82.   end;
  83. end;
  84.  
  85. procedure TForm1.Button2Click(Sender: TObject);
  86. begin
  87.   Memo1.Clear;
  88. end;
  89.  
  90. procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);
  91. begin
  92.   If StatusBar1 <> nil then
  93.     StatusBar1.SimpleText := status;
  94. end;
  95.  
  96. procedure TForm1.NMUDP1DataSend(Sender: TObject);
  97. begin
  98.   StatusBar1.SimpleText := 'Data Sent';
  99. end;
  100.  
  101. procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);
  102. var
  103.   TmpStr: String;
  104. begin
  105.   If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
  106.   Begin
  107.     NMUDP1.RemoteHost := TmpStr;
  108.     Handled := TRUE;
  109.   End;
  110. end;
  111.  
  112. procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  113.   NumberBytes: Integer; FromIP: String; Port: Integer);
  114. var
  115.   MyStream: TMemoryStream;
  116.   TmpStr: String;
  117. begin
  118.   MyStream := TMemoryStream.Create;
  119.   try
  120.     NMUDP1.ReadStream(MyStream);
  121.     SetLength(TmpStr,NumberBytes);
  122.     MyStream.Read(TmpStr[1],NumberBytes);
  123.     Memo1.Lines.Add(FromIP+': '+TmpStr);
  124.   finally
  125.     MyStream.Free;
  126.   end;
  127. end;  
  128.  
  129. end.
  130.