⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpdem.pas

📁 这有很多Delphi应用的例子
💻 PAS
字号:
unit UDPDem;

interface

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

type
  TForm1 = class(TForm)
    NMUDP1: TNMUDP;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Panel1: TPanel;
    Button2: TButton;
    Memo1: TMemo;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure NMUDP1Status(Sender: TComponent; status: String);
    procedure NMUDP1DataSend(Sender: TObject);
    procedure NMUDP1InvalidHost(var handled: Boolean);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: String; Port: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
//"Send"按钮的OnClick事件的处理程序
var
  MyStream: TMemoryStream;
  TmpStr: String;
Begin
  NMUDP1.ReportLevel := Status_Basic;//设置数据优先级
  NMUDP1.RemoteHost := Edit1.Text;//设置远程主机的地址
  NMUDP1.RemotePort := StrToInt(Edit2.Text);//设置接收方的端口号
  TmpStr := Edit3.Text;//设置要发送的数据
  MyStream := TMemoryStream.Create;//创建一个流对象
  try
    MyStream.Write(TmpStr[1], Length(Edit3.Text));//将要发送的数据封装到流对象中
    NMUDP1.SendStream(MyStream);//发送流对象
  finally
    MyStream.Free;//发送完毕释放流对象
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
//"Clear Memo"按钮的OnClick事件的处理程序
begin
  Memo1.Clear;//清除Memo控件中显示的接收到的数据
end;

procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);
//在NMUDP控件的状态改变时触发
begin
  If StatusBar1 <> nil then
  //如果状态条对象存在
    StatusBar1.SimpleText := status;//更新状态条中的显示
end;

procedure TForm1.NMUDP1DataSend(Sender: TObject);
//在NMUDP控件发送完数据后触发
begin
  StatusBar1.SimpleText := 'Data Sent';//更新状态条中的显示
end;

procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);
//在接收方地址不正确时触发
var
  TmpStr: String;
begin
  //弹出对话框,要求重新输入接收方主机地址
  If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
  //如果输入接收方主机地址后按"OK"按钮
  Begin
    NMUDP1.RemoteHost := TmpStr;//重新设定接收方主机地址
    Handled := TRUE;//表明错误已被处理,系统不必再进行处理
  End;
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
//在NMUDP控件接收到数据时触发
var
  MyStream: TMemoryStream;
  TmpStr: String;
begin
  MyStream := TMemoryStream.Create;//创建一个流对象
  try
    NMUDP1.ReadStream(MyStream);//把接收到的数据读到流对象中
    SetLength(TmpStr,NumberBytes);//设定字符串的长度为接收到的数据的长度
    MyStream.Read(TmpStr[1],NumberBytes);//把读到流对象中的数据保存到字符串中
    Memo1.Lines.Add(FromIP+': '+TmpStr);//把保存在字符串中的数据添加到Memo控件中进行显示
  finally
    MyStream.Free;//释放流对象
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -