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

来源:百度文库 编辑:神马文学网 时间:2024/04/29 19:34:20
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调试通过。