Créez deux applications, l'une représentant l'expéditeur et l'autre le destinataire.
Auteur
déposer une TIdUDPClient
et un composant TButton
sur votre formulaire. Sur le gestionnaire OnClick
du bouton d'écriture:
procedure TfrmUDPClient.BroadcastClick(Sender: TObject);
begin
UDPClient.Broadcast('Test', 8090);
end;
Récepteur
déposer une TIdUDPServer
sur votre formulaire, définissez le même port (8090) pour elle et l'ajouter au gestionnaire 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;
Pour tester les deux applications et cliquez sur le bouton. Pour tester avec deux «auditeurs» ou plus, vous devez utiliser une autre machine, c'est-à-dire que vous ne pouvez pas exécuter plusieurs écouteurs sur la même adresse IP.
Notez que UDP n'est pas fiable - voir http://en.wikipedia.org/wiki/User_Datagram_Protocol#Comparison_of_UDP_and_TCP - "Lorsqu'un message est envoyé, on ne peut pas savoir s'il arrivera à destination, il pourrait se perdre le long du Il n'y a pas de concept de reconnaissance, de retransmission ou de timeout. " – mjn
Au lieu de UDP j'utiliserais une connexion de socket client TCP qui écoute les messages du serveur dans un thread. Un protocole de pulsation peut être utilisé pour détecter la déconnexion côté client ou serveur. – mjn