Delphiでブロードキャストメッセージを送信するにはどうすればよいですか

broadcast delphi
Delphiでブロードキャストメッセージを送信するにはどうすればよいですか

LANでブロードキャストUDPメッセージを送信したいのですが、アプリケーションはクライアント/サーバーです。

ユーザーインターフェイスを更新することを望みます。この方法で、他のコンピューターを更新するためにコンピューターがメッセージを送信します。 UDPServer indyを使用できますか、使用方法は? ありがとう

  2  4


ベストアンサー

2つのアプリケーションを作成します。1つは送信者を表し、もう1つは受信者を表します。

送信者

フォームに TIdUDPClient`と TButton`コンポーネントをドロップします。 ボタンの「OnClick」ハンドラーに次のように記述します。

procedure TfrmUDPClient.BroadcastClick(Sender: TObject);
begin
  UDPClient.Broadcast('Test', 8090);
end;

受信機

フォームに TIdUDPServer`をドロップし、同じポート(8090)を定義して、これを OnUDPRead`ハンドラーに追加します。

procedure TfrmUDPServer.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  Msg: String;
begin
  DataStringStream := TStringStream.Create('');
  try
    DataStringStream.CopyFrom(AData, AData.Size);
    Msg := DataStringStream.DataString;
  finally
    DataStringStream.Free;
  end;
  ShowMessage(Msg);
end;

または、Indyの以降のバージョンでは:

procedure TfrmUDPServer.UDPServerUDPRead(AThread: TIdUDPListenerThread;
  const AData: TIdBytes; ABinding: TIdSocketHandle);
var
  Msg: String;
begin
  try
    {if you actually sent a string encoded in utf-8}
    Msg := TEncoding.UTF8.GetString(AData);
  except
  end;

  ShowMessage(Msg);
end;

テストするには、両方のアプリケーションを実行し、ボタンをクリックします。 2つ以上の「リスナー」でテストするには、別のマシンを使用する必要があります。 つまり、同じIP上で複数のリスナーを実行することはできません。

4


TIdUDPServer`または TIdUDPClient`コンポーネントを作成します。 どちらにも、必要なことを正確に行う「ブロードキャスト」メソッドがあります。

3


タイトルとURLをコピーしました