2

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

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

4

2 に答える 2

5

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

送信者

TIdUDPClientTButtonコンポーネントをフォームにドロップします。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 で複数のリスナーを実行することはできません。

于 2011-09-15T01:06:32.543 に答える
3

TIdUDPServerまたはTIdUDPClientコンポーネントを作成します。どちらにもBroadcast、必要なことを正確に実行するメソッドがあります。

于 2010-08-13T23:12:34.987 に答える