Zo všetkých komponentov, ktoré Delphi poskytuje podporu aplikácií, ktoré si vymieňajú údaje cez sieť (internet, intranet a lokálne), dva z najbežnejších sú TServerSocket a TClientSocket, ktoré sú navrhnuté tak, aby podporovali funkcie čítania a zápisu cez pripojenie TCP / IP.
Komponenty Winsock a Delphi Socket
Windows Sockets (Winsock) poskytuje otvorené rozhranie na programovanie siete pod operačným systémom Windows. Ponúka súbor funkcií, dátových štruktúr a súvisiacich parametrov potrebných na prístup k sieťovým službám všetkých protokolov. Winsock slúži ako spojenie medzi sieťovými aplikáciami a základnými protokolmi.
Komponenty soketu Delphi (obaly pre Winsock) zjednodušujú vytváranie aplikácií, ktoré komunikujú s inými systémami pomocou protokolu TCP / IP a súvisiacich protokolov. Pomocou zásuviek môžete čítať a zapisovať pripojenia k iným počítačom bez obáv z podrobností základného sieťového softvéru.
Internetová paleta na paneli s komponentmi Delphi je hostiteľom systému TServerSocket a TClientSocket komponenty, ako aj TcpClient, tcpserver, a TUdpSocket.
Ak chcete začať soketové pripojenie pomocou komponentu soketu, musíte zadať hostiteľa a port. Všeobecne, hostiteľ určuje alias pre IP adresu serverového systému; prístav určuje identifikačné číslo, ktoré identifikuje pripojenie soketu servera.
Jednoduchý jednosmerný program na odosielanie textu
Ak chcete vytvoriť jednoduchý príklad pomocou komponentov soketu poskytnutých spoločnosťou Delphi, vytvorte dva formuláre - jeden pre server a jeden pre klientsky počítač. Zámerom je umožniť klientom poslať niektoré textové údaje na server.
Ak chcete začať, otvorte Delphi dvakrát, vytvorte jeden projekt pre serverovú aplikáciu a jeden pre klienta.
Strana servera:
Do formulára vložte jeden komponent TServerSocket a jeden komponent TMemo. V Udalosť OnCreate do formulára pridajte nasledujúci kód:
procedúra TForm1.FormCreate (Sender: TObject);
začať
ServerSocket1.Port: = 23;
ServerSocket1.Active: = True;
koniec;
onClose udalosť by mala obsahovať:
procedúra TForm1.FormClose
(Odosielateľ: TObject; var Akcia: TCloseAction);
začať
ServerSocket1.Active: = false;
koniec;
Strana klienta:
Pre klientsku aplikáciu do formulára pridajte komponent TClientSocket, TEdit a TButton. Vložte nasledujúci kód pre klienta:
procedúra TForm1.FormCreate (Sender: TObject);
začať
ClientSocket1.Port: = 23;
// lokálna adresa TCP / IP servera
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
koniec;
procedúra TForm1.FormClose (odosielateľ: TObject; var Akcia: TCloseAction);
začať
ClientSocket1.Active: = false;
koniec;
procedúra TForm1.Button1Click (Sender: TObject);
beginif ClientSocket1.Active potom
ClientSocket1.Socket. SendText (Edit1.Text);
koniec;
Kód sa do značnej miery opisuje: Keď klient klikne na tlačidlo, text zadaný v komponente Edit1 sa odošle na server so zadaným portom a adresou hostiteľa.
Späť na server:
Posledným krokom v tejto vzorke je poskytnúť serveru funkciu, ktorá umožní „zobraziť“ údaje, ktoré klient posiela. Udalosť, ktorá nás zaujíma, je OnClientRead - nastáva, keď serverový soket má prečítať informácie z klientskeho soketu.
procedúra TForm1.ServerSocket1ClientRead (odosielateľ: TObject;
Socket: TCustomWinSocket);
začať
Memo1.Lines. Pridať (zásuvka. ReceiveText);
koniec;
Keď na server odosiela údaje viac ako jeden klient, budete potrebovať trochu viac na kódovanie:
procedúra TForm1.ServerSocket1ClientRead (odosielateľ: TObject;
Socket: TCustomWinSocket);
var
i: celé číslo;
Srec: povrázok;
beginfor i: = 0 na ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Pripojenie [i] dobegin
sRec: = ReceiveText;
ak sRecr '' thenbegin
Memo1.Lines. Pridať (RemoteAddress + 'send:');
Memo1.Lines. Pridať (sRecr);
koniec;
koniec;
koniec;
koniec;
Keď server prečíta informácie z klientskeho soketu, pridá tento text do komponentu Memo; pridá sa text aj klientská adresa RemoteAddress, takže budete vedieť, ktorý klient odoslal informácie. Pri prepracovanejších implementáciách môžu slúžiť ako náhrada aliasy známych IP adries.
Pre zložitejší projekt, ktorý používa tieto komponenty, preskúmajte Delphi> Ukážky> Internet> Rozhovor Projekt. Je to jednoduchá aplikácia na sieťový chat, ktorá používa jeden formulár (projekt) pre server aj pre klienta.