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.
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.