Jak vyměňovat data přes síť pomocí Delphi

click fraud protection

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.

instagram viewer

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.

instagram story viewer