Kako razmjenjivati ​​podatke putem mreže pomoću Delphija

Od svih komponenti koje Delphi pruža podršku za aplikacije koje razmjenjuju podatke putem mreže (internet, intranet i lokalno), a dvije su najčešće TServerSocket i TClientSocket, obje su dizajnirane za podršku funkcijama čitanja i pisanja preko TCP / IP veze.

Komponente utičnica Winsock i Delphi

Windows Sockets (Winsock) nudi otvoreno sučelje za mrežno programiranje pod Windows operativnim sustavom. Nudi skup funkcija, struktura podataka i s njima povezanih parametara potrebnih za pristup mrežnim uslugama bilo koje grupe protokola. Winsock djeluje kao veza između mrežnih aplikacija i osnovnih protokola.

Komponente Delphi socket-a (omotači za Winsock) pojednostavljuju stvaranje aplikacija koje komuniciraju s drugim sustavima koristeći TCP / IP i povezane protokole. Pomoću utičnica možete čitati i pisati preko veze s drugim strojevima bez brige o detaljima temeljnog mrežnog softvera.

Internetska paleta na alatnoj traci komponenti Delphi nalazi se u alatu TServerSocket i TClientSocket komponente kao i TcpClient, TcpServer, i TUdpSocket.

instagram viewer

Da biste pokrenuli utičnicu pomoću komponente utičnice, morate odrediti host i port. Općenito, domaćin određuje pseudonim za IP adresu poslužiteljskog sustava; luka određuje ID broj koji identificira vezu utičnice poslužitelja.

Jednostavan jednosmjerni program za slanje teksta

Da biste izradili jednostavan primjer koristeći komponente utičnice koje pruža Delphi, stvorite dva obrasca - jedan za poslužitelj i jedan za klijentsko računalo. Ideja je omogućiti klijentima da pošalju neke tekstualne podatke na poslužitelj.

Za početak, otvorite Delphi dvaput, kreirajući jedan projekt za poslužiteljsku aplikaciju i jedan za klijenta.

Strana poslužitelja:

U obrazac umetnite jednu TServerSocket komponentu i jednu TMemo komponentu. U OnCreate događaj za obrazac dodajte sljedeći kod:

postupak TForm1.FormCreate (pošiljalac: TObject);
početi
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Istina;
kraj;

OnClose događaj treba sadržavati:

postupak TForm1.FormClose
(Pošiljatelj: TObject; var Akcija: TCloseAction);
početi
ServerSocket1.Active: = netočno;
kraj;

Klijentova strana:

Za klijentsku aplikaciju, obliku dodajte komponentu TClientSocket, TEdit i TButton. Umetnite sljedeći kod za klijenta:

postupak TForm1.FormCreate (pošiljalac: TObject);
početi
ClientSocket1.Port: = 23;
// lokalna TCP / IP adresa poslužitelja
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = istina;
kraj;
postupak TForm1.FormClose (Pošiljatelj: TObject; var Akcija: TCloseAction);
početi
ClientSocket1.Active: = netočno;
kraj;
postupak TForm1.Button1Click (Pošiljatelj: TObject);
beginif ClientSocket1.Active zatim
ClientSocket1.Socket. SendText (Edit1.Text);
kraj;

Kôd prilično opisuje sam sebe: kada klijent klikne gumb, tekst naveden unutar komponente Edit1 bit će poslan poslužitelju s navedenim ulazom i adresom adrese.

Povratak na server:

Posljednji dodir u ovom uzorku je pružanje funkcije za poslužitelj da "vidi" podatke koje klijent šalje. Događaj koji nas zanima je OnClientRead - događa se kada bi utičnica poslužitelja trebala pročitati podatke s klijentske utičnice.

postupak TForm1.ServerSocket1ClientRead (Pošiljatelj: TObject;
Socket: TCustomWinSocket);
početi
Memo1.Lines. Dodaj (utičnica). ReceiveText);
kraj;

Kad više od jednog klijenta pošalje podatke na poslužitelj, trebat ćete ih još malo za kodiranje:

postupak TForm1.ServerSocket1ClientRead (Pošiljatelj: TObject;
Socket: TCustomWinSocket);
var
i: cijeli broj;
sRec: niz;
beginfor i: = 0 do ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Spojevi [i] dobegin
sRec: = ReceiveText;
ako sRecr '' thenbegin
Memo1.Lines. Dodaj (RemoteAddress + 'šalje:');
Memo1.Lines. Dodaj (sRecr);
kraj;
kraj;
kraj;
kraj;

Kada poslužitelj čita informacije s klijentske utičnice, dodaje taj tekst komponenti Memo; dodaju se i tekst i klijent RemoteAddress, tako da ćete znati koji je klijent poslao podatke. U sofisticiranijim implementacijama alijas za poznate IP adrese može poslužiti kao zamjena.

Za složeniji projekt koji koristi ove komponente istražite Delphi> Demos> Internet> Chat projekt. To je jednostavna aplikacija za mrežni chat koja koristi jedan oblik (projekt) i za poslužitelj i za klijenta.

instagram story viewer