unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls, System.Net, System.Net.Sockets, System.Text, Borland.Vcl.ExtCtrls; type TForm1 = class(TForm) StartSendButton: TButton; EndSendButton: TButton; Timer1: TTimer; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; procedure StartSendButtonClick(Sender: TObject); procedure EndSendButtonClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private sock: Socket; count: Integer; end; var Form1: TForm1; implementation {$R *.nfm} procedure TForm1.StartSendButtonClick(Sender: TObject); var ipaddr: IPAddress; begin // Multicast address = 'ff35:40:fdb4:353a:c83f:10::10' ipaddr := IPAddress.Parse(Edit1.Text); sock := Socket.Create(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); // Multicast port = '10101' sock.Connect(ipaddr, StrToInt(Edit2.Text)); count := 0; Timer1.Enabled := True; StartSendButton.Enabled := False; EndSendButton.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); var str: string; buf: TBytes; begin Inc(count); str := Format('%d', [count]) + ' ' + Edit3.Text; buf := Encoding.get_ASCII.GetBytes(str); sock.Ttl := 5; sock.Send(buf); end; procedure TForm1.EndSendButtonClick(Sender: TObject); begin Timer1.Enabled := False; sock.Close; StartSendButton.Enabled := True; EndSendButton.Enabled := False; end; end.