1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient;
type
TForm1 = class(TForm)
IdUDPClient1: TIdUDPClient;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
sReponse:String;
begin
//envoyer un broadcast pour retrouver le serveur
//le port a utiliser est le port sur lequel le serveur udp ecoute
IdUDPClient1.Broadcast('RECHERCHE-SERVEUR', 55555);
//attendre la reponse pendant un certain temps, ici on attends 1s (pour un reseau local c'est largement suffisant !!!)
sReponse := IdUDPClient1.ReceiveString(1000);
//si une reponse a ete recue, verifier qu'elle contient la chaine de caracteres 'JE-SUIS-SERVEUR'
if Pos('JE-SUIS-SERVEUR', sReponse) > 0 then
//afficher ce qui suit la chaine 'JE-SUIS-SERVEUR'
Edit1.Text := Copy( sReponse, Length('JE-SUIS-SERVEUR') + 1, Length(sReponse) - Length('JE-SUIS-SERVEUR'))
//sinon ce n'est pas le serveur
else
Edit1.Text := 'SERVEUR NON TROUVE';
//fermeture de la liaison
IdUDPClient1.Binding.CloseSocket();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//init des composants visuels
Label1.Caption := 'Serveur :';
Edit1.Text := '';
Button1.Caption := 'Chercher';
end;
end. |
Partager