Kuinka vaihtaa tietoja verkon kautta Delphiä käyttämällä

click fraud protection

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.

instagram viewer

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.

instagram story viewer