Kaikista komponenteista, jotka Delfoi tarjoaa tukea sovelluksille, jotka vaihtavat tietoja verkon (Internet, intranet ja paikallinen) välityksellä. Kaksi yleisintä ovat TServerSocket ja TClientSocket, jotka molemmat on suunniteltu tukemaan luku- ja kirjoitustoimintoja TCP / IP-yhteydellä.
Winsock- ja Delphi-pistorasiakomponentit
Windows-Sockets (Winsock) tarjoaa avoimen käyttöliittymän verkko-ohjelmointiin Windows-käyttöjärjestelmän alla. Se tarjoaa joukon toimintoja, tietorakenteita ja niihin liittyviä parametreja, joita tarvitaan kaikkien protokollapinojen verkkopalvelujen käyttämiseen. Winsock toimii linkkinä verkkosovellusten ja niiden alla olevien protokollapinojen välillä.
Delphi-pistorasiakomponentit (Winsock-kääre) virtaviivaistavat sovellusten luomista, jotka kommunikoivat muiden järjestelmien kanssa TCP / IP: n ja siihen liittyvien protokollien avulla. Pistorasioiden avulla voit lukea ja kirjoittaa yhteyksiä muihin koneisiin murehtimatta taustalla olevan verkko-ohjelmiston yksityiskohdista.
Delphi-komponentit-työkalurivin Internet-paletti isännöi TServerSocket ja TClientSocket komponentit samoin TcpClient, TcpServer, ja TUdpSocket.
Jos haluat aloittaa pistorasiayhteyden pistorasiakomponentin avulla, sinun on määritettävä isäntä ja portti. Yleisesti, isäntä määrittelee aliaksen palvelinjärjestelmän IP-osoitteelle; portti määrittelee tunnusnumeron, joka tunnistaa palvelinliitäntäyhteyden.
Yksinkertainen yksisuuntainen ohjelma tekstin lähettämiseen
Jos haluat rakentaa yksinkertaisen esimerkin Delphin tarjoamista pistorasiakomponenteista, luo kaksi lomaketta - yksi palvelimelle ja toinen asiakastietokoneelle. Ajatuksena on antaa asiakkaille mahdollisuus lähettää tekstitietoja palvelimelle.
Aloita avaamalla Delphi kahdesti, luomalla yksi projekti palvelinsovellukselle ja yksi asiakkaalle.
Palvelimen puolella:
Aseta lomakkeeseen yksi TServerSocket-komponentti ja yksi TMemo-komponentti. vuonna OnCreate-tapahtuma lisää lomakkeelle seuraava koodi:
menettely TForm1.FormCreate (Lähettäjä: TObject);
alkaa
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Totta;
pää;
OnClose tapahtuman tulisi sisältää:
menettely TForm1.FormClose
(Lähettäjä: TObject; var Toimi: TCloseAction);
alkaa
ServerSocket1.Active: = väärä;
pää;
Asiakkaan puolella:
Lisää asiakassovellusta varten TClientSocket-, TEdit- ja TButton-komponentit lomakkeeseen. Lisää seuraava asiakaskoodi:
menettely TForm1.FormCreate (Lähettäjä: TObject);
alkaa
ClientSocket1.Port: = 23;
// palvelimen paikallinen TCP / IP-osoite
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = totta;
pää;
menettely TForm1.FormClose (Lähettäjä: TObject; var Toimi: TCloseAction);
alkaa
ClientSocket1.Active: = väärä;
pää;
menettely TForm1.Button1Click (Lähettäjä: TObject);
beginif ClientSocket1.Active sitten
ClientSocket1.Socket. SendText (Muokkaa1.teksti);
pää;
Koodi kuvaa melko paljon itseään: kun asiakas napsauttaa nappia, Edit1-komponentin sisällä määritetty teksti lähetetään palvelimelle määritetyllä portilla ja isäntäosoitteella.
Takaisin palvelimelle:
Tämän näytteen viimeinen kosketus on tarjota palvelimelle toiminto "nähdä" asiakkaan lähettämät tiedot. Kiinnostavamme tapahtuma on OnClientRead - se tapahtuu, kun palvelinliitännän pitäisi lukea tietoja asiakaspistorasiasta.
menettely TForm1.ServerSocket1ClientRead (Lähettäjä: TObject;
Socket: TCustomWinSocket);
alkaa
Memo1.Lines. Lisää (Socket. ReceiveText);
pää;
Kun useampi kuin yksi asiakas lähettää tietoja palvelimelle, koodittamiseen tarvitaan vähän enemmän:
menettely TForm1.ServerSocket1ClientRead (Lähettäjä: TObject;
Socket: TCustomWinSocket);
var
i: kokonaisluku;
Srec: jono;
beginfor i: = 0 että ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Liitännät [i] dobegin
sRec: = ReceiveText;
jos sRecr '' thenbegin
Memo1.Lines. Lisää (RemoteAddress + 'lähettää:');
Memo1.Lines. Lisää (sRecr);
pää;
pää;
pää;
pää;
Kun palvelin lukee tietoja asiakaspistorasiasta, se lisää kyseisen tekstin Memo-komponenttiin; sekä teksti että asiakas RemoteAddress lisätään, joten tiedät, mikä asiakas lähetti tiedot. Kehittyneemmissä toteutuksissa tunnettujen IP-osoitteiden aliakset voivat toimia korvikkeina.
Tutustu monimutkaisempaan projektiin, joka käyttää näitä komponentteja Delphi> Demot> Internet> Chat projekti. Se on yksinkertainen verkkokeskustelusovellus, joka käyttää yhtä lomaketta (projekti) sekä palvelimelle että asiakkaalle.