PC每秒都会向网络上的其他计算机广播。 工作正常,除了不规则的间隔,没有传输5秒。然后它恢复,因为没有发生任何事情。
我试图将exe文件移动到另一台PC(以排除编程pc上的错误),但仍然是同样奇怪的结果。 以下是收到数据的屏幕截图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
注意数据从24到29缺失。 它也将在稍后遗漏(此处未显示)。 我不明白为什么。
以下是源代码:
unit UClientServer;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, IdUDPServer,
IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, IdGlobal, IdSocketHandle;
type
TForm1 = class(TForm)
Client: TIdUDPClient;
Tx: TLabeledEdit;
BtnStartC: TButton;
BtnStopC: TButton;
Timer1: TTimer;
procedure BtnStartCClick(Sender: TObject);
procedure BtnStopCClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
TimerTick: word = 0;
procedure TForm1.BtnStartCClick(Sender: TObject);
begin
Client.Active:= false;
Client.Host:= '192.168.1.255'; //Broadcast to all computers on this network...
Client.Port:= 8100; //...using this port
Client.Active:= true;
end;
procedure TForm1.BtnStopCClick(Sender: TObject);
begin
Client.Active:= false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
//Transmits every second a test message (1,2,3 and so on)
var
S: string;
begin
if Client.Active then
begin
inc(TimerTick);
Tx.Text:= IntToStr(TimerTick)+' ';
S:= S + Tx.Text;
if TimerTick mod 10 = 0 then S:= S + #13#10;
Client.Send(S);
end;
end;
end.
编程工具: Embarcadero®Delphi10.2东京版25.0.26309.314