Documente Academic
Documente Profesional
Documente Cultură
Prog Retea Slide
Prog Retea Slide
Introducere Trimiterea de mesaje i date s ntre aplicatii aate pe calculatoare conectate printr-o retea. Pachetul care ofer suport pentru scrierea a aplicatiilor de retea este java.net Notiuni fundamentale referitoare la retele: protocol adresa IP port socket
Ce este un protocol ? Protocol = conventie de reprezentare a datelor TCP (Transport Control Protocol) ux sigur de date conexiune permanent pe parcura sul comunicatiei UDP (User Datagram Protocol) pachete independente de date, numite datagrame nu stabilete o conexiune permas nent a
3
Cum este identicat un calculator retea ? n Adresa IP (IP - Internet Protocol) numeric a numr pe 32 de biti a 4 octeti: 193.231.30.131 simbolica : thor.infoiasi.ro Clasa InetAddress Numele calculatorului Permite identicarea ntr-o retea local. a
Ce este un port ? Un port este un numr pe 16 biti care a identic mod unic procesele care ruleaz a n a pe o anumit masin. a a Orice aplicatie care realizeaz o conex a iune retea va trebui s ataeze un n a s numr de port acelei conexiuni. a Valori posibile: 0 65535 Valori rezervate: 0 1023
Lucrul cu URL-uri Uniform Resource Locator ier (pagin Web, text, imagine, etc.) s a interogri la baze de date a rezultate ale unor comenzi
http://java.sun.com http://students.infoiasi.ro/index.html http://www.infoiasi.ro/~acf/imgs/taz.gif http://www.infoiasi.ro/~acf/ java/curs/9/prog_retea.html#url
Clasa java.net.URL Permite crearea unei referinte la un anumit URL. Poate genera MalformedURLException
try { URL adresa = new URL("http://xyz.abc"); } catch (MalformedURLException e) { System.err.println("URL invalid !\n" + e); }
Aarea informatiilor despre resursa referit a Citirea printr-un ux a continutului ierului respectiv. s Conectarea la acel URL pentru citirea i scrierea de informatii. s
9
10
Conectarea la un URL openConnection - creaz o conexia une bidirectional cu resursa specicat. a a Conexiunea este un obiect de tip URLConnection i permite: s crearea unui ux de intrare pentru citire creare unui ux de ieire pentru scrierea s de date URL: jsp, servlet, cgi-bin, php, etc
11
Socket-uri Socket (soclu) = abstractiune soft ware; capetele unei conexiuni; ataat s unui port. TCP: Socket i ServerSocket s UDP: DatagramSocket Modelul client/server serverul - ofer servicii; trebuie s a a poat trata cereri concurente. a clientul - initiaz conversatia cu un a server, solicitnd un anumit serviciu. a InetSocketAddress - (adresa IP, numr port) a
12
ServerSocket(int port) accept Socket(InetAddress address, int port) getInputStream getOutputStream BufferedReader, BufferedWriter i PrintWriter s DataInputStream, DataOutputStream ObjectInputStream, ObjectOutputStream
13
Structur server a
1. Creeaza un obiect de tip ServerSocket la un anumit port while (true) { 2. Asteapta realizarea unei conexiuni cu un client, folosind metoda accept; (va fi creat un obiect nou de tip Socket) 3. Trateaza cererea venita de la client: 3.1 Deschide un flux de intrare si primeste cererea 3.2 Deschide un flux de iesire si trimite raspunsul 3.3 Inchide fluxurile si socketul nou creat }
Structur client a
1. Citeste sau declara adresa IP a serverului si portul la care acesta ruleaza; 2. Creeaza un obiect de tip Socket cu adresa si portul specificate; 3. Comunica cu serverul: 3.1 Deschide un flux de iesire si trimite cererea; 3.2 Deschide un flux de intrare si primeste raspunsul; 3.3 Inchide fluxurile si socketul creat;
14
15
} public class SimpleServer { // Definim portul pe care se gaseste serverul // ( in afara intervalului 1 -1024) public static final int PORT = 8100; public SimpleServer () throws IOException { ServerSocket serverSocket = null ; try { serverSocket = new ServerSocket ( PORT ) ; while ( true ) { System . out . println ( " Asteptam un client ... " ) ; Socket socket = serverSocket . accept () ; // Executam solicitarea clientului intr - un fir de executie ClientThread t = new ClientThread ( socket ) ; t . start () ; } } catch ( IOException e ) { System . err . println ( " Eroare IO \ n " + e ) ; } finally { serverSocket . close () ; } } public static void main ( String [] args ) throws IOException { SimpleServer server = new SimpleServer () ; } }
16
// Portul la care serverul ofera serviciul int PORT = 8100; Socket socket = null ; PrintWriter out = null ; BufferedReader in = null ; String cerere , raspuns ; try { socket = new Socket ( adresaServer , PORT ) ; out = new PrintWriter ( socket . getOutputStream () , true ) ; in = new BufferedReader ( new Inpu tStream Reader ( socket . getInputStream () ) ) ; // Trimitem o cerere la server cerere = " Duke " ; out . println ( cerere ) ; // Asteaptam raspunsul de la server (" Hello Duke !") raspuns = in . readLine () ; System . out . println ( raspuns ) ; } catch ( UnknownHost E x c e p t i o n e ) { System . err . println ( " Serverul nu poate fi gasit \ n " + e ) ; System . exit (1) ; } finally { if ( out != null ) out . close () ; if ( in != null ) in . close () ; if ( socket != null ) socket . close () ; } } }
17
Avantaj: Solicit mai putin serverul. a Dezavantaje Nu este garantat ajungerea pachetelor a la destinatie Ordinea expedierii poate s nu e a pstrat a a
18
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) DatagramPacket(byte[] buf, int length, SocketAddress address) //Receptionare DatagramPacket(byte[] buf, int length) DatagramPacket(byte[] buf, int offset, int length)
19
Setarea informatiilor setData setAdress, setPort setSocketAddress Extragerea informatiilor getData getAdress, getPort getSocketAddress
20
21
public static void main ( String [] args ) throws IOException { new DatagramServer () . start () ; } }
22
} } }
23
Un grup de clienti abonati pentru trim itere multipl este specicat prin: a o adres IP din intervalul 224.0.0.1 a - 239.255.255.255 un port UDP Adresa 224.0.0.0 este rezervat. a
24
25
26
Proxy Un proxy este un server intermediar aat ntre client i serverul real. s Scopul: Imbuntirea performantei a at Securitate (ltrare) java -Dhttp.proxyHost=proxyhost [-Dhttp.proxyPort=portNumber] Aplicatie
27
RMI (Remote Method Invocation) Programare de retea la un nivel su perior Tehnologie Java pentru implementarea aplicatiilor distribuite Ofer o sintax i semantic similare a as a cu cele ale aplicatiilor ne-distribuite Permite colaborarea obiectelor aate maini virtuale diferite. n s Permite unuei aplicatii s apeleze metode a ale unui obiect aat alt spatiu de n adrese. Portabilitate
28
JXTA (Juxtapose) Infrastructur pentru comunicare peera to-peer Lansat de Sun Microsystems a Format dintr-o multime de protoa coale open-source care permit comunicarea P2P retea n ntre dispozitive de orice fel: PC, server, PDA, telefon, etc. Peer-urile JXTA formeaz o retea vira tual care pot interactiona direct, a n independent de rewall-uri, NAT (network address translation) sau protocoale de transport www.jxta.org
29
JMS (Java Message Service) Mesageria = Form de comunicare a bazat pe mesaje a ntre componente sau aplicatii (clienti). Caracteristici: asincron a loosely-coupled (spre deosebire de RMI care este tightly-coupled ) clientii comunic prin intermediul unor a agenti JMS ofer: un API Java pentru crearea a trimiterea, primirea, citirea de mesaje mod sigur, relaxat i asincron. n s
30