Hvordan utveksle data over et nettverk ved hjelp av Delphi

click fraud protection

Av alle komponentene som Delphi gir for å støtte applikasjoner som utveksler data over et nettverk (internett, intranett og lokalt), to av de vanligste er TServerSocket og TClientSocket, som begge er designet for å støtte lese- og skrivefunksjoner via en TCP / IP-tilkobling.

Winsock og Delphi Socket-komponenter

Windows Sockets (Winsock) gir et åpent grensesnitt for nettverksprogrammering under Windows-operativsystemet. Den tilbyr et sett med funksjoner, datastrukturer og relaterte parametere som kreves for å få tilgang til nettverkstjenestene til protokollstabler. Winsock fungerer som en kobling mellom nettverksapplikasjoner og underliggende protokollstapler.

Delphi socket-komponenter (innpakning for Winsock) strømlinjeformer opprettelsen av applikasjoner som kommuniserer med andre systemer ved bruk av TCP / IP og relaterte protokoller. Med stikkontakter kan du lese og skrive over tilkoblinger til andre maskiner uten å bekymre deg for detaljene i den underliggende nettverksprogramvaren.

Internett-paletten på Delphi-verktøylinjen er vert for

instagram viewer
TServerSocket og TClientSocket komponenter så vel som TcpClient, TcpServer, og TUdpSocket.

For å starte en socketforbindelse ved hjelp av en socket-komponent, må du spesifisere en vert og en port. Generelt, vert spesifiserer et alias for IP-adressen til serversystemet; havn angir ID-nummeret som identifiserer serverkontaktforbindelsen.

Et enkelt enveis program for å sende tekst

For å lage et enkelt eksempel ved å bruke sokkelkomponentene levert av Delphi, lager du to skjemaer - en for serveren og en for klientdatamaskinen. Tanken er å gjøre det mulig for klientene å sende tekstdata til serveren.

For å starte, åpner du Delphi to ganger, oppretter ett prosjekt for serverprogrammet og ett for klienten.

Server side:

Sett inn en TServerSocket-komponent og en TMemo-komponent på et skjema. I OnCreate-arrangement Legg til neste kode for skjemaet:

fremgangsmåte TForm1.FormCreate (avsender: TObject);
begynne
ServerSocket1.Port: = 23;
ServerSocket1.Active: = True;
slutt;

De OnClose arrangementet skal inneholde:

fremgangsmåte TForm1.FormClose
(Avsender: TObject; Var Handling: TCloseAction);
begynne
ServerSocket1.Active: = falsk;
slutt;

Klient side:

For klientapplikasjonen legger du til en TClientSocket-, TEdit- og TButton-komponent til et skjema. Sett inn følgende kode for klienten:

fremgangsmåte TForm1.FormCreate (avsender: TObject);
begynne
ClientSocket1.Port: = 23;
// lokal TCP / IP-adresse til serveren
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
slutt;
fremgangsmåte TForm1.FormClose (avsender: TObject; Var Handling: TCloseAction);
begynne
ClientSocket1.Active: = falsk;
slutt;
fremgangsmåte TForm1.Button1Click (avsender: TObject);
beginif ClientSocket1.Active deretter
ClientSocket1.Socket. SendText (Edit1.Text);
slutt;

Koden beskriver ganske mye seg selv: når en klient klikker på en knapp, vil teksten som er spesifisert i Edit1-komponenten bli sendt til serveren med spesifisert port og vertsadresse.

Tilbake til serveren:

Den siste berøringen i denne prøven er å gi en funksjon for serveren til å "se" dataene klienten sender. Hendelsen vi er interessert i er OnClientRead - det oppstår når serverkontakten skal lese informasjon fra en klientsokkel.

fremgangsmåte TForm1.ServerSocket1ClientRead (avsender: TObject;
Socket: TCustomWinSocket);
begynne
Memo1.Lines. Legg til (stikkontakt. ReceiveText);
slutt;

Når mer enn en klient sender data til serveren, trenger du litt mer for å kode:

fremgangsmåte TForm1.ServerSocket1ClientRead (avsender: TObject;
Socket: TCustomWinSocket);
Var
i: heltall;
SREC: string;
beginfor i: = 0 til ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Tilkoblinger [i] dobegin
sRec: = ReceiveText;
hvis sRecr '' thenbegin
Memo1.Lines. Legg til (RemoteAddress + 'sender:');
Memo1.Lines. Legg til (sRecr);
slutt;
slutt;
slutt;
slutt;

Når serveren leser informasjon fra en klientsokkel, legger den den teksten til Memo-komponenten; både teksten og klienten RemoteAddress er lagt til, slik at du vet hvilken klient som sendte informasjonen. I mer sofistikerte implementeringer kan aliaser for kjente IP-adresser tjene som erstatning.

For et mer komplekst prosjekt som bruker disse komponentene, kan du utforske Delphi> Demoer> Internett> Chat prosjekt. Det er en enkel nettprat-applikasjon som bruker en form (prosjekt) for både serveren og klienten.

instagram story viewer