AS201281 Wiki

Your check engine light is on!

User Tools

Site Tools


delphi_host_reachable

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
delphi_host_reachable [2011/06/27 18:55] S.Hdelphi_host_reachable [2011/09/19 19:24] (current) – effacée guillaume
Line 1: Line 1:
-====== Prérequis ====== 
- 
-Le code ci-dessus requiert l'intégration de la suite de composants **Indy** distribués gratuitement sur le [[http://www.indyproject.org/|site de Indy Project]].\\ 
-Les versions récentes de Delphi implémentent de base les composants issus de Indy. 
- 
-====== Description ====== 
- 
-La fonction présentée sert à testé l'existence d'un serveur web à l'aide du composant **TIdTelnet** via l'adresse spécifiée.\\ 
-Cette dernière prend deux paramètres: L'**adresse** en elle-même (Host) qui peut être remplis par un nom de domaine (example.com) ou une adresse IP (X.X.X.X), ainsi que le **Port** qui est par défaut à __80__ si celui-ci n'est pas indiqué.\\ 
-La valeur de retour est de type booléen; 
- 
-====== Rédaction ====== 
- 
-__[Note]__ Ajoutez l'unité **IdTelnet** aux clauses **uses** dans les premières lignes de votre code. 
- 
-<code delphi> 
-function HostReachable(Address: String; const Port: Word = 80): Boolean; 
-var 
-  T: TIdTelnet; // Déclaration de la variable T, utilisant la classe 'TIdTelnet' 
-begin 
- // Initialisation de la valeur de retour par défaut 
- Result := False; 
-  
- // Initialisation de la classe 
- T := TIdTelnet.Create(nil); 
-  
- // La variable 'Address' ne peut contenir le symbole de protocole 'http' ou 
- // des slash '/' 
- if (Pos('http://', Address) > 0) then 
- Address := StringReplace(Address, 'http://', '', [rfIgnoreCase]); 
-  
- if (Pos('/', Address) > 0) then 
- Address := StringReplace(Address, '/', '', [rfReplaceAll]); 
-  
- // Affectation de l'adresse spécifiée à la propriété de la classe 
- T.Host := Address; 
-  
- // Affectation du port spécifié à la propriété de la classe 
- T.Port := Port; 
-  
- // Tentative de connexion 
- try 
- try 
- // Connexion à l'hôte 
- T.Connect; 
- // Attente de 100 millisecondes par sécurité 
- Sleep(100); 
- // Affectation de la valeur de retour, si la connexion à pu être établie,  
- // la valeur de 'Connected' est modifiée par la classe elle-même. 
- Result := T.Connected; 
- // Déconnexion 
- T.Disconnect; 
- except 
- // Inutile d'affiché une éventuelle erreur de socket en cas d'échec,  
- // la fonction s'occupera de renvoyer 'false' 
- end; 
- finally 
- // Libération de la classe (très important) 
- T.Free; 
- end; 
-end; 
-</code> 
- 
-====== Conclusion ====== 
- 
-L'exemple montré n'est qu'une bride des possibilités réelles du composant et du protocole Telnet. 
-L'usage de ICMP reste plus logique, mais plus contraignant en Delphi au vu des dernières sécurités mises en place sur Windows Vista/Seven par Microsoft qui lève beaucoup d'erreurs (accès refusé, désynchronisation, etc.). 
  
delphi_host_reachable.1309200933.txt.gz · Last modified: 2021/01/04 20:40 (external edit)