Az összes alkotóelem közül Delphi a leggyakoribb az olyan hálózatok (Internet, Intranet és Helyi) adatcseréjét biztosító alkalmazások támogatására TServerSocket és TClientSocket, amelyek mindegyikét az olvasási és írási funkciók TCP / IP kapcsolaton keresztüli támogatására tervezték.
Winsock és Delphi Socket alkatrészek
A Windows Sockets (Winsock) nyílt felületet biztosít a Windows operációs rendszer alatti hálózati programozáshoz. Funkciókat, adatszerkezeteket és kapcsolódó paramétereket kínál, amelyek minden protokollcsomag hálózati szolgáltatásához való hozzáféréshez szükségesek. A Winsock összeköttetést jelent a hálózati alkalmazások és az alapjául szolgáló protokollkészletek között.
A Delphi socket komponensek (a Winsock csomagolása) korszerűsítik az olyan alkalmazások létrehozását, amelyek TCP / IP és kapcsolódó protokollok segítségével kommunikálnak más rendszerekkel. A foglalatokkal elolvashatja és megírhatja más gépekkel való kapcsolatokat anélkül, hogy aggódnia kellene a mögöttes hálózati szoftver részletei miatt.
Az Internet paletta a Delphi komponensek eszköztárán tárolja a TServerSocket és TClientSocket alkatrészek, valamint TcpClient, TcpServer, és TUdpSocket.
A socketkapcsolat socketkomponenssel történő elindításához meg kell adnia egy gazdagépet és egy portot. Általában, házigazda meghatároz egy álnevet a kiszolgálórendszer IP-címéhez; kikötő a kiszolgálóaljzat-kapcsolatot azonosító azonosítószámot adja meg.
Egy egyszerű egyirányú program a szöveg küldésére
Egy egyszerű példa elkészítéséhez a Delphi által biztosított socket-összetevők segítségével hozzon létre két űrlapot - egyet a szerverhez és egy az ügyfélszámítógéphez. Az ötlet az, hogy lehetővé tegyük az ügyfelek számára szöveges adatok küldését a szervernek.
Az induláshoz nyissa meg kétszer a Delphit, hozzon létre egy projektet a kiszolgálóalkalmazáshoz és egy az ügyfélhez.
Szerver oldal:
Az űrlapon helyezze be egy TServerSocket és egy TMemo összetevőt. Ban,-ben OnCreate esemény az űrlaphoz adja hozzá a következő kódot:
eljárás TForm1.FormCreate (küldő: TObject);
kezdődik
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Igaz;
vég;
Az OnClose az eseménynek tartalmaznia kell:
eljárás TForm1.FormClose
(Feladó: TObject; var Művelet: TCloseAction);
kezdődik
ServerSocket1.Active: = hamis;
vég;
Ügyfél oldal:
Az ügyfélalkalmazáshoz adjon hozzá egy űrlaphoz egy TClientSocket, TEdit és TButton összetevőt. Helyezze be az ügyfél következő kódját:
eljárás TForm1.FormCreate (küldő: TObject);
kezdődik
ClientSocket1.Port: = 23;
// a szerver helyi TCP / IP címe
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
vég;
eljárás TForm1.FormClose (Feladó: TObject; var Művelet: TCloseAction);
kezdődik
ClientSocket1.Active: = hamis;
vég;
eljárás TForm1.Button1Click (Feladó: TObject);
beginif ClientSocket1.Active azután
ClientSocket1.Socket. SendText (Edit1.Text);
vég;
A kód nagyjából leírja magát: amikor az ügyfél egy gombra kattint, az Edit1 komponensben megadott szöveget a kiszolgálóra küldi meg, megadott port- és host címmel.
Vissza a szerverre:
Ebben a mintában az utolsó érintés az, hogy a kiszolgálónak funkciót biztosítson az ügyfél által küldött adatok „megtekintéséhez”. Az az esemény, amelyben érdekel, OnClientRead - akkor fordul elő, amikor a kiszolgálóaljzatnak információt kell olvasnia egy kliensaljzatból.
eljárás TForm1.ServerSocket1ClientRead (Feladó: TObject;
Aljzat: TCustomWinSocket);
kezdődik
Memo1.Lines. Add (Aljzat. ReceiveText);
vég;
Amikor egynél több ügyfél küld adatokat az kiszolgálóra, akkor egy kicsit többre van szüksége a kódoláshoz:
eljárás TForm1.ServerSocket1ClientRead (Feladó: TObject;
Aljzat: TCustomWinSocket);
var
i: egész szám;
sRec: húr;
beginfor i: = 0 nak nek ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Csatlakozások [i] dobegin
sRec: = ReceiveText;
ha sRecr '' thenbegin
Memo1.Lines. Add (RemoteAddress + 'küld:');
Memo1.Lines. Add (sRecr);
vég;
vég;
vég;
vég;
Amikor a szerver információkat olvas az ügyfélcsatlakozóból, hozzáadja ezt a szöveget a Memo összetevőhöz; mind a szöveg, mind az ügyfél RemoteAddress hozzáadódik, így tudni fogja, mely ügyfél küldte az információkat. Kifinomultabb megvalósításokban az ismert IP-címek álnevei helyettesíthetõk.
Ha összetettebb projektet akar használni, amely ezeket az összetevőket használja, fedezze fel a Delphi> Demók> Internet> Csevegés projektben. Ez egy egyszerű hálózati csevegő alkalmazás, amely egy űrlapot (projektet) használ mind a szerver, mind az ügyfél számára.