Indy10 UDPclient传输不稳定

时间:2017-10-26 11:02:06

标签: delphi indy indy10 delphi-10.2-tokyo

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

0 个答案:

没有答案