Skriv nätverksmedvetna applikationer med Delphi

Av alla komponenter som Delphi tillhandahåller för att stödja applikationer som utbyter data över ett nätverk (internet, intranät och lokalt) är två av de vanligaste TServerSocket och TClientSocket, som båda är utformade för att stödja läs- och skrivfunktioner via en TCP / IP-anslutning.

Winsock och Delphi Socket Components

Windows Sockets (Winsock) tillhandahåller ett öppet gränssnitt för nätverksprogrammering under Windows-operativsystemet. Det erbjuder en uppsättning funktioner, datastrukturer och relaterade parametrar som krävs för att få åtkomst till nätverkstjänsterna för alla protokollstackar. Winsock fungerar som en länk mellan nätverksapplikationer och underliggande protokollstackar.

Delphi-socketkomponenter (omslag för Winsock) effektiviserar skapandet av applikationer som kommunicerar med andra system med TCP / IP och relaterade protokoll. Med uttag kan du läsa och skriva över anslutningar till andra maskiner utan att oroa dig för detaljerna i den underliggande nätverksprogramvaran.

Internetpaletten på Delphi-verktygsfältet är värd för TServerSocket och TClientSocket komponenter såväl som TcpClient, TcpServer, och TUdpSocket.

För att starta en socketanslutning med en socketkomponent måste du ange en värd och en port. I allmänhet, värd specificerar ett alias för serversystemets IP-adress; hamn anger ID-numret som identifierar anslutningen till serveruttaget.

Ett enkelt envägsprogram för att skicka text

För att skapa ett enkelt exempel med hjälp av socketkomponenterna från Delphi, skapar du två formulär-en för servern och en för klientdatorn. Tanken är att göra det möjligt för kunderna att skicka textdata till servern.

För att starta, öppna Delphi två gånger och skapa ett projekt för serverapplikationen och ett för klienten.

Server sida:

Sätt i en TServerSocket-komponent och en TMemo-komponent på ett formulär. Lägg till nästa kod i OnCreate-händelsen för formuläret:

procedur TForm1.FormCreate (avsändare: TObject);
Börja
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Sant;
slutet;

Händelsen OnClose ska innehålla:

procedur TForm1.FormClose
(Avsändare: TObject; var Åtgärd: TCloseAction);
Börja
ServerSocket1.Active: = falsk;
slutet;

Klientsidan:

För klientapplikationen lägg till en TClientSocket-, TEdit- och TButton-komponent till ett formulär. Sätt in följande kod för klienten:

procedur TForm1.FormCreate (avsändare: TObject);
Börja
ClientSocket1.Port: = 23;
// serverens lokala TCP / IP-adress
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
slutet;
procedur TForm1.FormClose (avsändare: TObject; var Åtgärd: TCloseAction);
Börja
ClientSocket1.Active: = falsk;
slutet;
procedur TForm1.Button1Click (avsändare: TObject);
beginif ClientSocket1.Active sedan
ClientSocket1.Socket.SendText (Edit1.Text);
slutet;

Koden beskriver ganska mycket sig själv: när en klient klickar på en knapp kommer den text som anges i Edit1-komponenten att skickas till servern med angiven port och värdadress.