Delphi中关于NMUDP控件的用法(原创)

来源:百度文库 编辑:神马文学网 时间:2024/04/27 14:35:39

Delphi中关于NMUDP控件的用法(原创)

likl

Delphi (2001-07-19 16:26:53)


 

在DELPHI中有一控件NMUDP,下面我们去了解这一控件的具体用法。
首先,在DELPHI中创建一新的application,我们在From中加入:
    Memo1: TMemo
    Memo2: Tmemo
    Button1: TButton
    NMUDP1: TNMUDP
其中:Memo1是接受数据显示框
      Memo2是NMUDP状态显示框
      Button1是用于发送数据按钮
      NMUDP1是client和server用于发送和接受数据控件

程序代码如下:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, NMUDP;

type
  TForm1 = class(TForm)
    NMUDP1: TNMUDP;
    Button1: TButton;
    Memo2: TMemo;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure NMUDP1BufferInvalid(var handled: Boolean;
      var Buff: array of Char; var length: Integer);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: String; Port: Integer);
    procedure NMUDP1DataSend(Sender: TObject);
    procedure NMUDP1Status(Sender: TComponent; status: String);
    procedure NMUDP1InvalidHost(var handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  C: Array [1..3] of Char;
begin
  C := ‘cat‘;
  NMUDP1.RemoteHost := ‘127.0.0.1‘;
  NMUDP1.ReportLevel := Status_Basic;
  NMUDP1.LocalPort := 6668;
  NMUDP1.RemotePort := 6668;
  NMUDP1.SendBuffer(C, 3);
end;

procedure TForm1.NMUDP1BufferInvalid(var handled: Boolean;
  var Buff: array of Char; var length: Integer);
begin
  ShowMessage(‘Buffer Invalid: Buffer contains no data‘);
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  C: array [1..3] of Char;
  I: Integer;
begin
  if NumberBytes <= 3 then
  begin
    NMUDP1.ReadBuffer(C, I);
    Memo1.Lines.Add(C+‘: received ‘+IntToStr(I)+‘ bytes from ‘+FromIP+‘ on port ‘+IntToStr(Port));
  end
  else
    Memo1.Lines.Add(IntToStr(I)+‘ bytes incoming, buffer too small‘);
end;

procedure TForm1.NMUDP1DataSend(Sender: TObject);
begin
  Memo2.Lines.Add(‘Data sent‘);
end;

procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);
begin
  Memo2.Lines.Add(status);
end;

procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);
var
  S: String;
begin
  S := NMUDP1.RemoteHost;
  if InputQuery(‘Invalid host‘, ‘Specify valid hostname: ‘, S) then
  begin
    NMUDP1.RemoteHost := S;
    handled := TRUE;
  end;
end;

end.

本程序在Windows98+Delphi5调试通过。