Delphi scrie o aplicație șablon client-server

Continuând tema de dezvoltare a propriei sale utilitate administrare, în acest articol voi discuta modelul tipic de program client-server pe baza cărora vă puteți dezvolta propriile aplicații client-server. Acest exemplu de șablon pentru ușurință în înțelegere și ușurință în utilizare va fi discutat în exemplul componentelor ClientSocket și ServerSocket.







remarcă
Pentru cei care nu știu ce înseamnă aplicația client-server, voi explica: este un complex de programe (module) compuse din două părți - client și server. Partea de server este „principal“ - așa-numitul postul de comandă, care este încredințată sarcina de a comunica cu toți clienții și comenzile de control al distribuției corespunzătoare funcționalității lor (management al clienților). Clientul face parte dintr-un secundar, dar nu mai puțin importantă, deoarece este un element important și obligatoriu, care permite de a efectua comenzi de la distanță (funcții) pe un computer care execută.

> Componentele ClientSocket și ServerSocket. pe care o vom folosi, se află pe fila Internet. Dacă această filă, nu aveți aceste componente (și la instalare Delphi7 acestea nu sunt instalate implicit), trebuie să le instalați-vă (pachetul dclsocketsXX.bpl). Acest pachet poate fi găsit pe CD de instalare Delphi7 (sau "C: \ Temp" folderul unde ați despachetat de distribuție înainte de instalare - "C: \ Temp \ delphi7 \ install \ program files \ Borland \ delphi7 \ bin"), sau îl puteți descărca de aici . Pentru a instala acest pachet, rulați Delphi7. Accesați meniul Component-> Instalare pachete. În fereastra care apare, faceți clic pe butonul "Adăugați" și specificați locația în care este localizat pachetul dclsocketsXX.bpl. Apoi faceți clic pe OK. Componenta în loc.







Sper ca tot ce este explicat este disponibil =). Acum să mergem la afaceri și să începem cu partea serverului. Pentru a face acest lucru, creați un proiect și lăsați componenta ServerSocket în formular. În setările componentei ServerSocket, specificăm următoarele:
Activ = fals
Nume = ss
Port = 4321
ServerType = stNonBlocking

Și, de asemenea, pentru comoditate vom arunca componenta Memo. în care vom scoate toate datele. Să numim jurnalul de componente.

Apoi, pentru componenta ServerSocket, definim metoda onClientConnect. Pentru a stabili când clienții se conectează. Introduceți următorul cod:

Acum definiți metoda onClientRead. în care vom procesa mesaje primite de la clienți:

Definiți metoda onClientDisconnect. pentru a înregistra deconectarea clientului:

Acest lucru se face cu partea de server.

Să ajungem la partea clientului. Pentru a face acest lucru, creați un nou proiect, lăsați componenta ClientSocket și cronometrul pe formular. În setările componentei, vom specifica următoarele:
Activ = fals
Nume = cs
Port = 4321
ClientType = ctNonBlocking
Adresa = 127.0.0.1

Aici, pentru comoditate, lăsăm și componenta Memo pe formular. în care vom furniza informațiile tehnice. Numele este dat de jurnalul corespunzător.

Pentru componenta ClientSocket, definim metoda onError pentru a trata excepțiile care au apărut atunci când clientul este conectat la server. Introduceți următorul cod:

Acum definim metoda onConnect. Introduceți următorul cod:

Și pentru a remedia momentul pierderii comunicării cu serverul, definim metoda onDisconnect:

Am setat cronometrul astfel:
Enabled = true
Nume = te
Interval = 5000

Și definim metoda onTimer. Introduceți următorul cod:

Acest cod verifică dacă există o conexiune la server și dacă nu, încearcă să o instaleze.
Și la fiecare 5 secunde trimite un mesaj "client ping" la server.

Iată ce arată modelul tipic de aplicație client-server.

remarcă
Aș dori să atrag atenția asupra handler onerror cei care anterior nu au știut cum să scape de mesajul nefast - «eroare socket Asynchronous 10061" . Această eroare apare atunci când încercați să vă conectați la un server care nu este disponibil.

Actualizare: Au existat câteva link-uri către descărcare, dar au fost rupte. La cerere, puteți încerca să restaurați.
Actualizarea 2: Din păcate, nu există o astfel de opțiune în acest moment.







Articole similare

Trimiteți-le prietenilor: