Ze všech komponent, které Delphi poskytuje podporu aplikací, které si vyměňují data přes síť (internet, intranet a místní), dvě z nejběžnějších jsou TServerSocket a TClientSocket, které jsou navrženy tak, aby podporovaly funkce čtení a zápisu přes připojení TCP / IP.
Komponenty Winsock a Delphi Socket
Windows Sockets (Winsock) poskytuje otevřené rozhraní pro síťové programování v operačním systému Windows. Nabízí sadu funkcí, datových struktur a souvisejících parametrů potřebných pro přístup k síťovým službám všech protokolů. Winsock funguje jako propojení mezi síťovými aplikacemi a základními protokolovými zásobníky.
Komponenty soketu Delphi (obálky pro Winsock) zjednodušují vytváření aplikací, které komunikují s jinými systémy pomocí protokolu TCP / IP a souvisejících protokolů. Díky zásuvkám můžete číst a zapisovat připojení k jiným strojům, aniž byste se museli starat o podrobnosti základního síťového softwaru.
Internetová paleta na panelu nástrojů Delphi je hostitelem TServerSocket a TClientSocket komponenty a také TcpClient, TcpServer, a TUdpSocket.
Chcete-li zahájit soketové připojení pomocí komponenty soketu, musíte zadat hostitele a port. Obecně, hostitel určuje alias pro IP adresu serverového systému; přístav Určuje ID číslo, které identifikuje připojení soketu serveru.
Jednoduchý jednosměrný program pro odesílání textu
Chcete-li vytvořit jednoduchý příklad pomocí komponent soketu poskytovaných společností Delphi, vytvořte dva formuláře - jeden pro server a jeden pro klientský počítač. Cílem je umožnit klientům odesílat na server některá textová data.
Chcete-li začít, otevřete Delphi dvakrát a vytvořte jeden projekt pro serverovou aplikaci a jeden pro klienta.
Strana serveru:
Do formuláře vložte jednu komponentu TServerSocket a jednu komponentu TMemo. V Událost OnCreate k formuláři přidejte následující kód:
postup TForm1.FormCreate (Sender: TObject);
začít
ServerSocket1.Port: = 23;
ServerSocket1.Active: = True;
konec;
OnClose událost by měla obsahovat:
postup TForm1.FormClose
(Odesílatel: TObject; var Akce: TCloseAction);
začít
ServerSocket1.Active: = false;
konec;
Strana klienta:
Pro klientskou aplikaci přidejte do formuláře komponentu TClientSocket, TEdit a TButton. Vložte následující kód pro klienta:
postup TForm1.FormCreate (Sender: TObject);
začít
ClientSocket1.Port: = 23;
// lokální TCP / IP adresa serveru
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
konec;
postup TForm1.FormClose (odesílatel: TObject; var Akce: TCloseAction);
začít
ClientSocket1.Active: = false;
konec;
postup TForm1.Button1Click (Sender: TObject);
začátek ClientSocket1.Active pak
ClientSocket1.Socket. SendText (Edit1.Text);
konec;
Kód se do značné míry popisuje: když klient klepne na tlačítko, text určený uvnitř komponenty Edit1 bude odeslán na server se zadaným portem a hostitelskou adresou.
Zpět na server:
Posledním dotekem v tomto vzorku je poskytnout serveru funkci „vidět“ data, která klient odesílá. Událost, která nás zajímá, je OnClientRead - nastává, když serverový soket má číst informace z klientského soketu.
postup TForm1.ServerSocket1ClientRead (Odesílatel: TObject;
Socket: TCustomWinSocket);
začít
Memo1.Lines. Přidat (Socket. ReceiveText);
konec;
Když více než jeden klient odešle data na server, budete potřebovat trochu víc kódu:
postup TForm1.ServerSocket1ClientRead (Odesílatel: TObject;
Socket: TCustomWinSocket);
var
i: celé číslo;
sRec: tětiva;
začátek i: = 0 na ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Připojení [i] dobegin
sRec: = ReceiveText;
-li sRecr '' thenbegin
Memo1.Lines. Přidat (RemoteAddress + 'send:');
Memo1.Lines. Přidat (sRecr);
konec;
konec;
konec;
konec;
Když server přečte informace z klientského soketu, přidá tento text do komponenty Memo; přidá se text i klientská adresa RemoteAddress, takže budete vědět, který klient tyto informace odeslal. V sofistikovanějších implementacích mohou sloužit jako náhrada aliasy pro známé IP adresy.
Pro složitější projekt, který tyto komponenty používá, prozkoumejte Delphi> Dema> Internet> Chat projekt. Je to jednoduchá aplikace pro síťový chat, která používá jeden formulář (projekt) pro server i pro klienta.