Kako izmenjati podatke po omrežju z uporabo Delphija

Od vseh komponent, ki Delphi ponuja za podporo aplikacijam, ki izmenjujejo podatke po omrežju (internet, intranet in lokalno), kar sta dve najpogostejši TServerSocket in TClientSocket, ki sta zasnovani za podporo funkcij branja in pisanja prek povezave TCP / IP.

Komponente vtičnic Winsock in Delphi

Windows Sockets (Winsock) ponuja odprt vmesnik za omrežno programiranje v operacijskem sistemu Windows. Ponuja nabor funkcij, podatkovnih struktur in z njimi povezanih parametrov, potrebnih za dostop do omrežnih storitev katerega koli protokola. Winsock deluje kot povezava med omrežnimi aplikacijami in osnovnimi nizi protokolov.

Komponente vtičnic Delphi (ovoji za Winsock) racionalizirajo ustvarjanje aplikacij, ki komunicirajo z drugimi sistemi z uporabo TCP / IP in z njimi povezanih protokolov. Z vtičnicami lahko preberete in pišete povezave z drugimi stroji, ne da bi vas skrbele podrobnosti osnovne programske opreme za omrežje.

Internetna paleta v orodni vrstici komponent Delphi gosti spletno mesto TServerSocket in TClientSocket sestavni deli kot tudi TcpClient, TcpServer, in TUdpSocket.

instagram viewer

Če želite vzpostaviti povezavo vtičnice s pomočjo komponente vtičnice, morate določiti gostitelja in vrata. Na splošno, gostitelj poda vzdevek za IP naslov strežniškega sistema; pristanišče določa ID številko, ki identificira povezavo strežniške vtičnice.

Preprost enosmerni program za pošiljanje besedila

Če želite sestaviti preprost primer s pomočjo komponent socket, ki jih ponuja Delphi, ustvarite dva obrazca - enega za strežnik in drugega za odjemalski računalnik. Ideja je omogočiti strankam, da na strežnik pošljejo nekaj besedilnih podatkov.

Za začetek odprite Delphi dvakrat in ustvarite en projekt za strežniško aplikacijo in enega za stranko.

Strani strežnika:

V obrazec vstavite eno komponento TServerSocket in eno komponento TMemo. V OnCreate dogodek za obrazec dodajte naslednjo kodo:

postopek TForm1.FormCreate (Pošiljatelj: TObject);
začeti
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Res;
konec;

The OnClose dogodek mora vsebovati:

postopek TForm1.FormClose
(Pošiljatelj: TObject; var Ukrep: TCloseAction);
začeti
ServerSocket1.Active: = false;
konec;

Stranka stranke:

Za odjemalsko aplikacijo v obrazec dodajte komponente TClientSocket, TEdit in TButton. Za stranko vnesite naslednjo kodo:

postopek TForm1.FormCreate (Pošiljatelj: TObject);
začeti
ClientSocket1.Port: = 23;
// lokalni TCP / IP naslov strežnika
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = res;
konec;
postopek TForm1.FormClose (Pošiljatelj: TObject; var Ukrep: TCloseAction);
začeti
ClientSocket1.Active: = napačno;
konec;
postopek TForm1.Button1Click (Pošiljatelj: TObject);
beginif ClientSocket1.Active torej
ClientSocket1.Socket. SendText (Edit1.Text);
konec;

Koda precej opisuje samo sebe: ko odjemalec klikne gumb, bo besedilo, ki je določeno znotraj komponente Edit1, poslano strežniku z določenim naslovom vrat in gostitelja.

Nazaj na strežnik:

Zadnji del tega vzorca je zagotoviti, da strežnik funkcijo "vidi" podatke, ki jih odjemalec pošilja. Dogodek, ki nas zanima, je OnClientRead - zgodi se, ko mora strežniška vtičnica prebrati podatke iz odjemalčeve vtičnice.

postopek TForm1.ServerSocket1ClientRead (Pošiljatelj: TObject;
Vtičnica: TCustomWinSocket);
začeti
Memo1.Lines. Dodaj (vtičnica). ReceiveText);
konec;

Ko več odjemalcev pošlje podatke strežniku, boste potrebovali nekaj več za kodiranje:

postopek TForm1.ServerSocket1ClientRead (Pošiljatelj: TObject;
Vtičnica: TCustomWinSocket);
var
i: celo število;
sRec: vrvica;
startfor i: = 0 do ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Povezave [i] dobegin
sRec: = ReceiveText;
če sRecr '' potem začet
Memo1.Lines. Dodaj (RemoteAddress + 'pošlje:');
Memo1.Lines. Dodaj (sRecr);
konec;
konec;
konec;
konec;

Ko strežnik prebere podatke iz odjemalčeve vtičnice, doda to besedilo komponenti Memo; dodana sta besedilo in odjemalca RemoteAddress, tako da boste vedeli, kateri odjemalec je podatke poslal. V bolj izpopolnjenih izvedbah lahko nadomestki za znane naslove IP služijo kot nadomestek.

Za bolj zapleten projekt, ki uporablja te komponente, raziščite Delphi> Demos> Internet> Klepet projekt. Gre za preprosto aplikacijo za omrežni klepet, ki uporablja en obrazec (projekt) tako za strežnik kot za odjemalca.