A Delphi sablon kliens-kiszolgáló alkalmazást ír
Folytatva a saját adminisztrációs segédprogram fejlesztésének témáját, ebben a cikkben megfontolom egy tipikus kliens-szerver program sablont, amelynek alapján saját ügyfélkiszolgáló alkalmazásokat fejleszthet ki. Ezt a minta sablont a könnyebb megértés és az egyszerű használat érdekében a ClientSocket és ServerSocket összetevők példáján tárgyaljuk.
megjegyzés
Azok számára, akik nem tudják, mi az ügyfél-kiszolgáló alkalmazás, azt megmagyarázom: ez egy összetett programok (modulok), amelyek két részből állnak - ügyfél és szerver. A kiszolgáló rész a "fő" - az úgynevezett parancs post, amelynek feladata az összes ügyféllel való kommunikáció fenntartása és a funkcionalitásukhoz (ügyfélkezelés) megfelelő vezérlési parancsok terjesztése. Az ügyfélrész másodlagos, de nem kevésbé fontos, mivel fontos és összekötő elem, amely lehetővé teszi távoli parancsok (függvények) végrehajtását azon a számítógépen, amelyen telepítve van.
> A ClientSocket és ServerSocket komponensei. amit használni fogunk, az internetes lapon találhatók. Ha nem rendelkezel ezekkel a komponensekkel ezen a lapon (és ezek alapértelmezés szerint nincsenek telepítve a Delphi7 telepítésekor), akkor telepítenie kell őket (csomag dclsocketsXX.bpl). Ez a csomag megtalálható a Delphi7 telepítőlemezen (vagy a "C: \ Temp" mappában, ahol az elosztócsomag kicsomagolása a telepítés előtt - "C: \ Temp \ delphi7 \ bin"), vagy innen letölthető . A csomag telepítéséhez futtassa a Delphi7-et. Menjen az Alkotóelem-> Csomagok telepítése menübe. A megjelenő ablakban kattintson a "Hozzáadás" gombra, és adja meg a dclsocketsXX.bpl csomag helyét. Ezt követően kattintson az OK gombra. Komponens a helyén.
Remélem, minden magyarázat elérhető =). Most menjünk le az üzletbe, és kezdjük el a kiszolgáló részét. Ehhez hozzon létre egy projektet, és engedje le a ServerSocket összetevőt az űrlapra. A ServerSocket összetevő beállításaiban a következőket adjuk meg:
Aktív = hamis
Név = ss
Port = 4321
ServerType = stNonBlocking
És kényelemért is dobjuk az összetevő Memo-t. amelyben az összes adatot kiadjuk. Nevezzük be az összetevő naplót.
Ezután a ServerSocket összetevőhöz definiáljuk az onClientConnect metódust. Annak meghatározása, hogy az ügyfelek hogyan csatlakoznak. Helyezze be a következő kódot:
Most definiáld az onClientRead módszert. amelyben feldolgozzuk a fogadott üzeneteket az ügyfelektől:
Határozza meg az onClientDisconnect metódust. hogy rögzítse az ügyfél lekapcsolásának tényét:
Ez a kiszolgáló részével történik.
Menjünk az ügyfél oldalára. Ehhez hozzon létre egy új projektet, dobja le a ClientSocket összetevőt és az időzítőt az űrlapra. Az összetevő beállításainál a következőket adjuk meg:
Aktív = hamis
Név = cs
Port = 4321
ClientType = ctNonBlocking
Cím = 127.0.0.1
Itt a kényelem érdekében a Memo összetevőt is bedobjuk az űrlapra. amelyben a technikai információkat továbbítjuk. A nevet a megfelelő napló adja.
A ClientSocket összetevőnél definiáljuk az onError metódust a kiszolgálóhoz csatlakozó kliensek kivételével. Helyezze be a következő kódot:
Most meghatározzuk az onConnect módszert. Helyezze be a következő kódot:
A kiszolgálóval való kommunikáció elvesztésének pillanatát pedig meghatározzuk az onDisconnect módszerrel:
Az időzítést úgy állítjuk be, mint ez:
Enabled = igaz
Név = te
Intervallum = 5000
És meghatározzuk az onTimer módszert. Helyezze be a következő kódot:
Ez a kód ellenőrzi, hogy van-e kapcsolat a kiszolgálóval, és ha nem, megpróbálja telepíteni.
És minden 5 másodpercben egy "ping ügyfél" üzenetet küld a kiszolgálónak.
Íme egy tipikus példa egy "kliens-szerver" alkalmazási sablonra.
megjegyzés
Szeretnék felhívni a figyelmet az onTrror kezelőre azok számára, akik nem tudták, hogyan lehet megszabadulni a szerencsétlen üzenettől - "Asynchronous socket error 10061". Ez a hiba akkor fordul elő, ha megpróbál csatlakozni nem elérhető kiszolgálóhoz.
Frissítés: Vannak linkek a letöltésre, de megszakadtak. Kérésre megpróbálhatja visszaállítani.
2. frissítés: Sajnos jelenleg nincs ilyen lehetőség.