Schrijf netwerkbewuste toepassingen met Delphi

Van alle componenten die Delphi biedt om applicaties te ondersteunen die gegevens uitwisselen via een netwerk (internet, intranet en lokaal), zijn twee van de meest voorkomende TServerSocket en TClientSocket, beide zijn ontworpen om lees- en schrijffuncties te ondersteunen via een TCP / IP-verbinding.

Winsock- en Delphi-socketcomponenten

Windows Sockets (Winsock) biedt een open interface voor netwerkprogrammering onder het Windows-besturingssysteem. Het biedt een set functies, gegevensstructuren en bijbehorende parameters die nodig zijn voor toegang tot de netwerkservices van alle protocolstacks. Winsock fungeert als een koppeling tussen netwerktoepassingen en onderliggende protocolstapels.

Delphi-socketcomponenten (wrappers voor de Winsock) stroomlijnen het maken van applicaties die communiceren met andere systemen met behulp van TCP / IP en gerelateerde protocollen. Met sockets kunt u verbindingen met andere machines lezen en schrijven zonder dat u zich zorgen hoeft te maken over de details van de onderliggende netwerksoftware.

Het internetpalet op de Delphi-componentenwerkbalk host de TServerSocket en TClientSocket componenten evenals TCPClient, TCPServer, en TUdpSocket.

Als u een socketverbinding wilt starten met een socketcomponent, moet u een host en een poort opgeven. In het algemeen, gastheer specificeert een alias voor het IP-adres van het serversysteem; haven specificeert het ID-nummer dat de server-socketverbinding identificeert.

Een eenvoudig eenrichtingsprogramma om tekst te verzenden

Als u een eenvoudig voorbeeld wilt maken met de socketcomponenten van Delphi, maakt u twee formulieren: een voor de server en een voor de clientcomputer. Het idee is om de clients in staat te stellen tekstuele gegevens naar de server te verzenden.

Om te beginnen, opent u Delphi twee keer en maakt u één project voor de servertoepassing en één voor de client.

Serverzijde:

Voeg op een formulier één TServerSocket-component en één TMemo-component in. Voeg in de OnCreate-gebeurtenis voor het formulier de volgende code toe:

procedure TForm1.FormCreate (Sender: TObject);
beginnen
ServerSocket1.Port: = 23;
ServerSocket1.Active: = True;
einde;

Het OnClose-evenement moet bevatten:

procedure TForm1.FormClose
(Afzender: TObject; var Actie: TCloseAction);
beginnen
ServerSocket1.Active: = false;
einde;

Kant van de cliënt:

Voeg voor de clienttoepassing een component TClientSocket, TEdit en TButton toe aan een formulier. Voer de volgende code in voor de client:

procedure TForm1.FormCreate (Sender: TObject);
beginnen
ClientSocket1.Port: = 23;
// lokaal TCP / IP-adres van de server
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
einde;
procedure TForm1.FormClose (Afzender: TObject; var Actie: TCloseAction);
beginnen
ClientSocket1.Active: = false;
einde;
procedure TForm1.Button1Click (Sender: TObject);
beginif ClientSocket1.Active vervolgens
ClientSocket1.Socket.SendText (Edit1.Text);
einde;

De code beschrijft zichzelf vrijwel: wanneer een client op een knop klikt, wordt de tekst die is opgegeven in de component Edit1 naar de server verzonden met de opgegeven poort en het hostadres.