Scrivi applicazioni compatibili con la rete con Delphi

Di tutti i componenti forniti da Delphi per supportare le applicazioni che scambiano dati su una rete (internet, intranet e locale), due dei più comuni sono TServerSocket e TClientSocket, entrambi sono progettati per supportare le funzioni di lettura e scrittura su una connessione TCP / IP.

Winsock e Delphi Socket Components

Windows Sockets (Winsock) fornisce un'interfaccia aperta per la programmazione di rete con il sistema operativo Windows. Offre una serie di funzioni, strutture di dati e parametri correlati richiesti per accedere ai servizi di rete di qualsiasi stack di protocollo. Winsock funge da collegamento tra le applicazioni di rete e gli stack di protocollo sottostanti.

I componenti socket Delphi (wrapper per Winsock) semplificano la creazione di applicazioni che comunicano con altri sistemi tramite TCP / IP e relativi protocolli. Con i socket, puoi leggere e scrivere su connessioni ad altre macchine senza preoccuparti dei dettagli del software di rete sottostante.

La tavolozza Internet sulla barra degli strumenti dei componenti di Delphi ospita il TServerSocket e TClientSocket componenti e TcpClient, tcpserver, e TUdpSocket.

Per avviare una connessione socket utilizzando un componente socket, è necessario specificare un host e una porta. In generale, ospite specifica un alias per l'indirizzo IP del sistema server; porta specifica il numero ID che identifica la connessione socket del server.

Un semplice programma unidirezionale per inviare testo

Per creare un semplice esempio utilizzando i componenti socket forniti da Delphi, creare due moduli: uno per il server e uno per il computer client. L'idea è di consentire ai client di inviare alcuni dati testuali al server.

Per iniziare, apri Delphi due volte, creando un progetto per l'applicazione server e uno per il client.

Lato server:

In un modulo, inserire un componente TServerSocket e un componente TMemo. Nell'evento OnCreate per il modulo, aggiungi il codice seguente:

procedura TForm1.FormCreate (Mittente: TObject);
inizio
ServerSocket1.Port: = 23;
ServerSocket1.Active: = True;
fine;

L'evento OnClose dovrebbe contenere:

procedura TForm1.FormClose
(Mittente: TObject; var Azione: TCloseAction);
inizio
ServerSocket1.Active: = false;
fine;

Dalla parte del cliente:

Per l'applicazione client, aggiungere un componente TClientSocket, TEdit e TButton a un modulo. Inserisci il seguente codice per il client:

procedura TForm1.FormCreate (Mittente: TObject);
inizio
ClientSocket1.Port: = 23;
// indirizzo TCP / IP locale del server
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
fine;
procedura TForm1.FormClose (Mittente: TObject; var Azione: TCloseAction);
inizio
ClientSocket1.Active: = false;
fine;
procedura TForm1.Button1Click (Mittente: TObject);
beginif ClientSocket1.Active poi
ClientSocket1.Socket.SendText (Edit1.Text);
fine;

Il codice praticamente descrive se stesso: quando un client fa clic su un pulsante, il testo specificato all'interno del componente Edit1 verrà inviato al server con la porta e l'indirizzo host specificati.