Descrierea prizelor în limba java

În ceea ce privește tipurile de prize, există două dintre ele - streaming și datagramă.

Cu mufe de streaming, puteți crea canale de date între două aplicații Java sub formă de fire, pe care le-am abordat deja în capitolul al doilea.





Conductele pot fi introduse sau ieșite, convenționale sau formatate, cu sau fără buffering. În curând, veți fi convins că nu este mai greu să organizați schimbul de date între aplicații Java folosind mufe de streaming decât să lucrați prin fluxuri cu fișiere obișnuite.







Rețineți că socketurile de flux vă permit să transferați date numai între două aplicații, deoarece acestea presupun crearea unui canal între aceste aplicații. Cu toate acestea, uneori este necesar să se asigure interacțiunea mai multor aplicații client cu un singur server sau cu mai multe aplicații client cu mai multe aplicații server. În acest caz, puteți să creați sarcini separate și canale separate în aplicația server pentru fiecare aplicație client sau să utilizați socket-uri de datagram. Acestea din urmă permit ca datele să fie transferate simultan către toate nodurile rețelei, deși această posibilitate este rar utilizată și este adesea blocată de administratorii de rețea.

Motivul absenței unei garanții de livrare a datelor atunci când se utilizează socluri datagrame este utilizarea unor astfel de prize UDP, care, la rândul lor, se bazează pe un protocol cu ​​o livrare negarantată de IP. Conectorii de flux lucrează prin protocolul de livrare garantat TCP.

Constructori de prize

De cele mai multe ori, pentru a crea socket-uri în aplicațiile client, veți folosi unul dintre cei doi constructori, dintre care prototipurile sunt arătate mai jos: Socket public (gazdă String, port int), public Socket (adresa InetAddress, int port);

Clasa Socket definește o altă pereche de constructori, care, cu toate acestea, nu este recomandată pentru utilizare: Socket public (Host String, int port, boolean); Socket public (adresa InetAddress, int port, stream boolean);

În acești constructori, ultimul parametru determină tipul soclului. Dacă acest parametru este adevărat, este creat un socket de flux și, dacă este fals, un soclu datagram. Rețineți că trebuie să utilizați clasa DatagramSocket pentru a lucra cu prize de date.

Metode de clasă Socket

Vă prezentăm cele mai interesante, după părerea noastră, metode de clasă Socket.

Mai presus de toate, această metodă getInputStream și getOutputStream, pentru crearea de intrare și de flux de ieșire, respectiv: InputStream publice getInputStream (); publică OutputStream getOutputStream ();

Aceste fluxuri sunt asociate cu soclu și ar trebui utilizate pentru a transfera date pe canalul de comunicații.

Metoda getLocalPort returnează numărul de port local pentru acest socket: public int getLocalPort ();

După ce ați terminat lucrul cu soclul, acesta trebuie închis folosind metoda close: public void close ();

În cele din urmă, metoda toString returnează un șir de text reprezentând socket-ul: public String toString ();

1. Crearea unui design grafic

Programul arată astfel:

Descrierea prizelor în limba java

Toate elementele sunt selectate din paleta de instrumente disponibilă în programul jBuilder v2.00. Pentru a plasa elementul selectat din panoul, este suficient să se aloce doar o singură apăsare de tastă, și „întindere“ la dimensiunea dorită în spațiul de lucru (bevelPanel1)

Cel mai înalt element care conține textul localhost se numește choiceControl. Aceasta este fereastra pentru selectarea numărului IP al computerului cu care să comunicați. Elementul textFieldControl urmează, starea conexiunii va fi afișată în el. Aceste elemente se află pe fila JBCL.

Iar cele două ferestre de jos ale jTextArea servesc pentru trimiterea și primirea de text. Dar trebuie remarcat faptul că semnăturile acestor ferestre "Send:" și "Reciev:" sunt create de un element textControl separat din bara de instrumente.

Există, de asemenea, patru elemente jButton din fila Swing. Se poate spune că aceste butoane nu diferă de butoanele din fila JBCL și sunt selectate în mod arbitrar. Când creați un buton, în mod implicit acesta va conține numele inscripției elementului buton propriu-zis. Pentru a schimba acest text, selectați butonul o dată și în panoul Inspector (partea dreaptă a ecranului) și introduceți textul dorit în fața liniei de text.

2. Decuparea programelor

La începutul oricărei aplicații, bibliotecile necesare sunt conectate.

În acest exemplu:

Apoi, descriem socketul, variabilele șirului, fluxurile de intrare și ieșire:

În următorul pas, vom crea fluxurile de intrare și de ieșire, apelând metodele getInputStream și getOutputStream, respectiv: is = s.getInputStream (); os = s.getOutputStream ();

aplicare suplimentară pregătește tampon buf pentru primirea de date și determină o lungime variabilă, care este înregistrată în dimensiunea unității de date primite: byte buf [] = new byte [512]; int lungime;

Acum sunteți gata să porniți bucla de primire și procesare a liniilor din aplicația client.







Articole similare

Trimiteți-le prietenilor: