LANでブロードキャストUDPメッセージを送信したいのですが、アプリケーションはクライアント/サーバーです。
ユーザーインターフェイスを更新したいのですが、この方法で、どのコンピューターも他のコンピューターを更新するためのメッセージを送信します。UDPServer indyを使用できますか、使用方法は?ありがとう
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 で複数のリスナーを実行することはできません。
TIdUDPServer
またはTIdUDPClient
コンポーネントを作成します。どちらにもBroadcast
、必要なことを正確に実行するメソッドがあります。