Căutați computere în rețea

După cum puteți vedea algoritmul de căutare este foarte simplu, dar această metodă este relativ lent, desigur, totul depinde de mărimea rețelei locale. Acum, hai să vorbim despre componenta însăși, cu care vom lucra. Această componentă este, așa cum am menționat mai devreme o parte din Indy și situat în tab-ul bibliotecii - IndyClients. și se numește TIdIcmpClient. Această componentă ne oferă o oportunitate de a pinge o anumită gazdă. Pentru sarcina noastră, acest lucru ne convine cu siguranță. Ceea ce trebuie să ping orice gazdă, respectiv, numele de gazdă, atunci mărimea pachetului, pe care o vom trimite la gazdă, precum și necesitatea de port și TimeOut.







Deci, ceea ce facem este setarea numelui gazdei, apoi TimeOut. cât de multe opri trimiterea de pachete, apoi folosind metoda Ping vom trimite pachetul atunci când trebuie să specificați dimensiunea pachetului (nu este obligatoriu), și în legendă (din titlu), timpul nostru de afișare fereastră, în milisecunde, pentru cât de mult pachetul nostru de dimensiunea de 32 bytes a fost trimis la gazdă. Apoi, selectați componenta noastră TIdIcmpClient. Apoi, du-te la lista de evenimente a componentei și selectați evenimentul OnReply. După aceea, scriem următorul cod pentru acest eveniment:







Ce facem aici, trebuie doar să verificați existența gazdele noastre, în cazul în care acesta există, apoi se adaugă la listă, dacă nu, atunci nu face nimic, de obicei, în cazul în care nu există nici o gazda, gazda va AReplyStatus.FromIpAddress de tip 0.0.0.0.

Programul. care produc o căutare pentru calculatoare în rețea, foarte mult, în special pentru Windows

Sursele articolului pot fi descărcate aici

utilizări
Ferestre, Mesaje, SysUtils, Variante, Clase, Grafica, Controale, Formulare,
Dialoguri, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
IdIcmpClient, StdCtrls;

tip
TForm1 = clasa (TForm)
btn1: TButton;
lst1: TListBox;
idcmpclnt1: TIdIcmpClient;
procedura btn1Click (expeditor: TObject);
procedura idcmpclnt1Reply (ASender: TComponent;
const AReplyStatus: TReplyStatus);
privat

public

se încheie;

var
Form1: TForm1;

procedura TForm1.btn1Click (expeditor: TObject);
începe
idcmpclnt1.Host:='176.194.204.175 ';
idcmpclnt1.ReceiveTimeout: = 100;
idcmpclnt1.Ping ('32 ');
Titlu: = IntToStr (idcmpclnt1.ReplyStatus.MsRoundTripTime)
se încheie;

procedura TForm1.idcmpclnt1Reply (ASender: TComponent;
const AReplyStatus: TReplyStatus);
începe
încerca
dacă idcmpclnt1.Host = AReplyStatus.FromIpAddress apoi lst1.Items.Add (AReplyStatus.FromIpAddress);
cu excepția
pe e: Excepția face
se încheie;

De ce nu funcționează?







Articole similare

Trimiteți-le prietenilor: