URI:
   DIR Return Create A Forum - Home
       ---------------------------------------------------------
       Forum Practic
  HTML https://practic.createaforum.com
       ---------------------------------------------------------
       *****************************************************
   DIR Return to: Informatica
       *****************************************************
       #Post#: 131--------------------------------------------------
       APLICATII DE RETEA - JAVA
   DIR By: iulianstoian
       Date: January 13, 2015, 7:05 pm
       ---------------------------------------------------------
       Pachetul java.net
       Clase y6z18zm
       ContentHandler
       DatagramPacket
       DatagramSocket
       DatagramSocketImpl
       HttpURLConnection
       InetAddress
       MulticastSocket
       ServerSocket
       Socket
       SocketImpl
       URL
       URLConnection
       URLEncoder
       URLStreamHandler
       Exceptii
       BindException
       ConnectException
       MalformedURLException
       NoRouteToHostException
       ProtocolException
       SocketException
       UnknownHostException
       UnknownServiceException
       Interfete
       ContentHandlerFactory
       FileNameMap
       SocketImplFactory
       URLStreamHandlerFactory
       Folosirea adreselor IP (Internet Protocol)
       Clasa InetAdress
       Furnizeaza mecanismul prin intermediul caruia sunt manipulate
       adresele IP.
       Metode bytest getAddress( )
       Returneaza adresa efectiva reprezentata de obiectul respectiv
       intr-un vector de 4 octeti.Cel mai semnificativ octet se gaseste
       in getAddress()s0t.
       Ex: s123, 45, 67, 89t
       java.lang.String getHostAddress( )
       Returneaza adresa efectiva sub forma unui sir “%d.%d.%d.%d”
       Ex: “123.45.67.89” java.lang.String getHostName( )
       Returneaza numele simbolic al adresei respective static
       java.net.InetAddress getLocalHost( ) throws
       java.net.UnknownHostException
       Ex: xyz@thor.infoiasi.ro boolean isMulticastAddress( ) boolean
       equals( java.lang.Object obj ) static java.net.InetAddressst
       getAllByName( java.lang.String host ) throws
       java.net.UnknownHostException
       Determina toate adresele unui claculator. (Daca un calculator
       este conectat la mai multe retele el trebuie sa aiba cate o
       adresa IP pentru fiecare retea la care este conectat).
       Parametrul host poate fi - fie numele masinii ex: java.sun.com
       - fie un sir reprezentand adresa IP a masinii static
       java.net.InetAddress getByName( java.lang.String host ) throws
       java.net.UnknownHostException
       Construieste adresa IP a unui calculator. int hashCode( )
       java.lang.String toString( )
       Intrucat acesata clasa nu are constructor public, pentru a crea
       o instanta a unui obiect de tip InetAddress trebuie folosita una
       din metodele statice : getLocalHost, getAllByName sau getByName,
       care apeleaza la randul lor cnstructorii privati ai clasei.
       Comunicarea prin protocoale orientate pe conexiune
       Un protocol este o combinatie de reguli de comunicatie si
       formate de mesaje care trebuie respectate de calculatoarele
       legate in retea pentru a schimba date. Scopul primar al
       protocoalelor este de a permite comunicatia intre calculatoare,
       indiferent de retea sau de hardware-ul calculatoarelor legate in
       retea.
       O conexiune reprezinta un canal sigur de comunicatie in retea,
       stabilit de catre un protocol pentru transmiterea corecta si in
       ordine a mesajelor intre calculatoare. O conexiune este formata
       din doua fluxuri de date unidirectionale folosite pentru
       comunicatie precum si din doua socluri (socket) care permit
       trimiterea, respectiv receptia datelor. Orice conexiune este
       unic determinata de cele doua socluri plasate la cele doua
       capete ale conexiunii.
       Versiunea standard de Java foloseste pentru implementarea
       comunicatiei pe baza de conexiuni protocolul TCP (Transmission
       Control protocol), unul din protocoalele de baza ale familiei
       TCP/IP.
       Modul de lucru cu soclurile se incadreaza in modelul
       client/server de scriere de aplicatii, model in care aplicatiile
       se impart in doua categorii :
       • programe client - cele care initiaza conversatia
       • programe server - cele care ofera servicii programelor client
       In virtutea acestui fapt, orice conexiune intre doua programe
       care comunica prin retea este determinata unic de 4 elemente :
       1. adresa gazdei pe care ruleaza aplicatia client
       2. numarul de port al aplicatiei client
       3. adresa gazdei pe care ruleaza aplicatia server
       4. numarul de port pe care serverul primeste cererile
       Un soclu Java poate lucra in doua moduri :
       - direct - implicit (suficient pentru majoritatea aplicatiilor)
       - cu facilitati speciale pe soclu, folosit de aplicatiile care
       necesita comunicarea peste un zid de protectie (firewall) sau
       prin intermediul unui server proxy
       Implementarea unui soclu (client sau server) se realizeaza prin
       extinderea clasei abstracte SocketImpl.Metodele acestei clase
       pun la dipozitie instrumente de comunicatie directa. Pentru a
       crea un soclu cu facilitati speciale este necesara redefinirea
       metodelelor din aceasta clasa.
       Clasa SocketImpl
       Variabile
       protected java.io.FileDescriptor fd
       The file descriptor object for this socket. protected
       java.net.InetAddress address
       The IP address of the remote end of this socket. protected int
       port
       The port number on the remote host to which this socket is
       connected. protected int localport
       The local port number to which this socket is connected.
       Metode protected java.io.FileDescriptor getFileDescriptor( )
       protected java.net.InetAddress getInetAddress( ) protected
       abstract java.io.InputStream getInputStream( ) throws
       java.io.IOException protected int getLocalPort( ) protected
       abstract java.io.OutputStream getOutputStream( ) throws
       java.io.IOException protected int getPort( )
       java.lang.String toString( )
       protected abstract void accept( java.net.SocketImpl s ) throws
       java.io.IOException
       Accepta realizarea unei conexiuni protected abstract int
       available( ) throws java.io.IOException
       Returneaza nr de octeti care pot fi cititi fara a bloca
       conexiunea protected abstract void bind( java.net.InetAddress
       host, int port ) throws java.io.IOException
       Leaga conexiunea de un anumit partener specificat prin adresa IP
       si port protected abstract void close( ) throws
       java.io.IOException
       Inchide o conexiune protected abstract void connect(
       java.net.InetAddress address, int port
       ) throws java.io.IOException
       Realizeaza o conexiune cu un anumit partener protected abstract
       void connect( java.lang.String host, int port ) throws
       java.io.IOException protected abstract void create( boolean
       stream ) throws java.io.IOException protected abstract void
       listen( int backlog ) throws java.io.IOException
       Stabileste numarul maxim de conexiuni admise protected native
       java.lang.Object clone( ) throws
       java.lang.CloneNotSupportedException protected void finalize( )
       throws java.lang.Throwable
       Programe de tip client
       Clasa Socket abstractizeaza notiunea de soclu client (numit in
       general soclu) si este responsabila de majoritatea operatiilor
       necesare comunicatiei in retea. Prin instantierea unui obiect de
       tip Socket, programul client poate sa initieze o conexiune (prin
       constructor) si sa implementeze comunicatia prin retea.
       Structura unei aplicatii client bazate pe conexiuni
       1. Initializari
       2. Are facilitati speciale de soclu Da - Schimbare comportament
       prin SocketImpl
       3. Creare soclu de comunicare si stabilire conexiune
       4. Obtinere fluxuri de comunicare cu partenerul
       5. Prelucrari specifice aplicatiei client
       6. Este ultimul utilizator al soclului Da - Inchidere soclu
       7. Faza finala a executiei
       Clasa Socket
       Constructori protected Socket( )
       Creeaza o conexiune fara nici un partener specificat protected
       Socket( java.net.SocketImpl impl ) throws
       java.net.SocketException public Socket( java.net.InetAddress
       address, int port ) throws java.io.IOException
       Creates a socket and connects it to the specified port number at
       the specified IP address. public Socket( java.lang.String host,
       int port ) throws java.net.UnknownHostException,
       java.io.IOException public Socket( java.net.InetAddress host,
       int port, boolean stream ) throws java.io.IOException
       If the stream argument is true, this creates a stream socket. If
       the stream argument is false, it creates a datagram socket.
       public Socket( java.lang.String host, int port, boolean stream )
       throws java.io.IOException
       public Socket( java.lang.String host, int port,
       java.net.InetAddress localAddr, int localPort ) throws
       java.io.IOException
       The Socket will bind() to the local address and port supplied.
       public Socket( java.net.InetAddress address, int port,
       java.net.InetAddress localAddr, int localPort ) throws
       java.io.IOException
       Metode
       java.net.InetAddress getInetAddress( ) java.io.InputStream
       getInputStream( ) throws java.io.IOException
       Obtine fluxul de intrare de la care pot fi citite datele din
       acest soclu. java.net.InetAddress getLocalAddress( ) int
       getLocalPort( ) java.io.OutputStream getOutputStream( ) throws
       java.io.IOException
       Obtine fluxul de iesire prin care pot fi scrise datele int
       getPort( ) static synchronized void setSocketImplFactory(
       java.net.SocketImplFactory fac ) throws java.io.IOException
       int getSoLinger( ) throws java.net.SocketException synchronized
       int getSoTimeout( ) throws java.net.SocketException synchronized
       void setSoTimeout( int timeout ) throws java.net.SocketException
       boolean getTcpNoDelay( ) throws java.net.SocketException void
       setTcpNoDelay( boolean on ) throws java.net.SocketException
       synchronized void close( ) throws java.io.IOException void
       setSoLinger( boolean on, int val ) throws
       java.net.SocketException java.lang.String toString( )
       Programul tip server
       Serverul este programul care asculta cererile venite de la
       clienti si le ofera serviciul pentru care a fost creat.
       Identificarea serverelor se face prin intermediul portului pe
       care serverul asteapta cererile de conexiune venite din partea
       clientilor. Majoritatea serviciilor foarte des folosite in
       Internet au asociate porturi standardizate, pentru a permite
       clientilor sa opereze cu diferite servere in vederea obtinerii
       unui serviciu.
       Exemple de numere de porturi standardizate :
       Serviciu Port asociat
       Posta electronica 25
       Transfer de fisiere 21
       Telnet 23
       Finger 79
       WWW 80
       Ecou 7
       Executie la distanta (rexec) 512
       POP3 (Post Office Protocol) 110
       Primul lucru pe care trebui sa-l faca un program server este sa
       se asocieze portuluistabilit la momentul proiectarii aplicatiei
       si sa initieze ascultarea cererilor de servicii venite de la
       clienti. Aceste lucruri se realizeaza prin constructorul clasei
       ServerSocket, clasa care implementeaza soclul programului
       server.
       Un lucru esential in proiectarea unei aplicatii server este
       faptul ca aceasta trebuie construita in asa fel incat sa poata
       prelucra in paralel cererile clientilor. Acest lucru se
       realizeaza prin folosirea mai multor fire de executie, fiecare
       fir de executie ocupandu-se cu un singur client. De asemenea
       este prevazut un mecanism pentru a limita numarul de cereri care
       pot fi prelucrate in paralel si deci si numarul firelor de
       executie care ruleaza la un moment dat. Implicit acest numar
       este 50, dar poate fi specificat ca argument al constructorului.
       Orice cerere noua va fi respinsa daca numarul de cereri
       prelucrate are valoarea maxima specificata.
       Structura unei aplicatii server bazate pe conexiuni
       1. Initializari
       2. Are facilitati speciale de soclu Da - Schimbare comportament
       prin SocketImpl
       3. Creare soclu server pentru ascultare cereri
       4. Ascultarea continua Nu - Inchidere soclu
       Faza finala
       5. Ascultare cereri conexiuni
       6. Acceptare cerere si obtinere soclu pentru comunicare
       7. Creare fir de executie pentru tratarea conexiunii
       7.1. Initializare fir tratare conexiune
       7.2. Prelucrare conforma cu protocolul textului
       7.3. Inchidere soclu comunicare
       7.4. Terminare fir tratare conexiune
       8. GOTO 4
       Clasa ServerSocket
       Constructori
       public ServerSocket( int port ) throws java.io.IOException
       Creates a server socket on a specified port. A port of 0 creates
       a socket on any free port.
       The maximum queue length for incoming connection indications (a
       request to connect) is set to 50.
       public ServerSocket( int port, int backlog ) throws
       java.io.IOException
       public ServerSocket( int port, int backlog, java.net.InetAddress
       bindAddr ) throws java.io.IOException
       Create a server with the specified port, listen backlog, and
       local IP address to bind to. The bindAddr argument can be used
       on a multi-homed host for a ServerSocket that will only accept
       connect requests to one of its addresses. If bindAddr is null,
       it will default accepting connections on any/all local
       addresses. The port must be between 0 and 65535, inclusive.
       Metode
       java.net.InetAddress getInetAddress( ) int getLocalPort( )
       static synchronized void setSocketFactory(
       java.net.SocketImplFactory fac ) throws java.io.IOException
       synchronized int getSoTimeout( ) throws java.io.IOException
       synchronized void setSoTimeout( int timeout ) throws
       java.net.SocketException
       java.net.Socket accept( ) throws java.io.IOException void close(
       ) throws java.io.IOException java.lang.String toString( )
       Comunicatia folosind datagrame
       Datagramele reprezinta o cantitate de informatii trimisa prin
       intermediul unui pachet independent fata de alte informatii.
       Fiecare pachet este transmis de la o masina la alta doar pe baza
       informatiilor continute de el insusi. Pachete trimise de la o
       destinatie catre aceeasi sursa pot ajunge pe rute diferite si in
       orice ordine.
       In cadrul implementarii standard Java, datagramele sunt
       transportate prin retea folosind prototcolul UDP (User Datagram
       Protocol), unul din protocoalele de baza ale familiei TCP/IP.
       Avantaje:
       • viteza de transfer mai mare
       • adaptarea la conditiile de moment ale retelei (congestii,
       legaturi temporar indisponibile, etc)
       Dezavantaje : lucru mai dificil
       Diferenta fata de comunicarea printr-un canal sigur oferita de
       metoda comunicatiei prin conexiuni este ca, folosind datagrame,
       nu se stabileste o legatura permanenta intre client si server.
       De fapt, chiar notiunile de client si server isi pierd
       semnificatiile, intrucat ambele folosesc pentru comunicare
       acelasi tip de soclu, implementat de clasa DatagramSocket.
       Clientul va fi aplicatia care incapsuleaza o cantitate de date
       (cerere) intr-un pachet si o transmite unui partener, iar server
       va fi aplicatia care primeste pachete de tip cerere si retrimite
       pachete cu raspunsuri la cererile primite. In cazul in care un
       pachet se pierde, clientul va retransmite cererea dupa un anumit
       interval de timp.
       Pentru datagrame nu exista destinatii implicite, asadar in
       fiecare datagrama trebuie specificate:
       • adresa destinatie
       • numarul portului la care se trimite datagrama
       • continutul datagramei
       In Java, acese informatii sunt concentrate in obiecte de tip
       DatagramPacket.
       Structura unei aplicatii bazate pe datagrame
       1. Initializari
       2. Are facilitati speciale de soclu Da - Schimbare comportament
       prin DatagramSocketImpl
       3. Creare soclu datagrame
       4. Care este actiunea urmatoare Transmisie
       Producere date
       Incapsulare date in pachet
       Trimitere date
       Receptie
       Creare pachet receptie date
       Receptie date
       Prelucrare date
       5. Este ultimul utilizator al soclului Nu - GOTO 4
       Da -
       Inchidere soclu
       Faza finala
       Clasa DatagramPacket
       Constructori public DatagramPacket( bytest ibuf, int ilength )
       Construieste un obiect pentru receptionarea pachetelor de
       lungime ilength. Obs: ilength <a ibuf.length
       public DatagramPacket( bytest ibuf, int ilength,
       java.net.InetAddress iaddr, int iport )
       Construieste un obiect pentru trimiterea de pachete de lungime
       ilength spre gazda si portul specificate.
       Metode
       synchronized java.net.InetAddress getAddress( )
       Returneaza adresa IP la care datagrama este trimisa sau de la
       care a fost receptionata synchronized void setAddress(
       java.net.InetAddress iaddr ) synchronized bytest getData( )
       Returneaza datele care sunt trimise sau care au fost
       receptionate synchronized void setData( bytest ibuf )
       synchronized int getLength( )
       Returneaza lungimea pachetului care va fi trimis sau care a fost
       receptionat synchronized void setLength( int ilength )
       synchronized int getPort( )
       Returneaza numarul portului la care datagrama este trimisa sau
       de la care a fost receptionata synchronized void setPort( int
       iport )
       Clasa DatagramSocket
       Constructori public DatagramSocket( ) throws
       java.net.SocketException
       Constructs a datagram socket and binds it to any available port
       on the local host machine. public DatagramSocket( int port )
       throws java.net.SocketException
       Constructs a datagram socket and binds it to the specified port
       on the local host machine. public DatagramSocket( int port,
       java.net.InetAddress laddr ) throws java.net.SocketException
       Creates a datagram socket, bound to the specified local address.
       The local port must be between 0 and 65535 inclusive.
       Metode
       java.net.InetAddress getLocalAddress( ) int getLocalPort( )
       synchronized int getSoTimeout( ) throws java.net.SocketException
       synchronized void setSoTimeout( int timeout ) throws
       java.net.SocketException
       void close( ) synchronized void receive( java.net.DatagramPacket
       p ) throws java.io.IOException void send(
       java.net.DatagramPacket p ) throws java.io.IOException
       Transferul de documente din WWW
       Adresele prin care sunt localizate documentele se numesc URL-uri
       (Uniform Resource Locator). Ele permit identificarea unica a
       unui document pe baza urmatorilor parametri :
       • protocolul prin care se transfera documentul
       • serverul care gazduieste documentul
       • numarul de port, daca este diferit fata de cel implicit
       folosit de protocol
       • directorul in care se afla documentul
       . numele fisierului in care este plasat documentul
       Mai mult, este posibila identificarea chiar a unor sectiuni din
       documentul respectiv.
       Folosirea adreselor URL se realizeaza prin intermediul clasei
       URL.
       Clasa URL
       Constructori public URL( java.lang.String spec ) throws
       java.net.MalformedURLException
       public URL( java.lang.String protocol, java.lang.String host,
       int port, java.lang.String file ) throws
       java.net.MalformedURLException
       ...
       Metode
       final java.lang.Object getContent( ) throws java.io.IOException
       java.lang.String getFile( ) java.lang.String getHost( ) int
       getPort( ) java.lang.String getProtocol( ) java.lang.String
       getRef( ) static synchronized void setURLStreamHandlerFactory(
       java.net.URLStreamHandlerFactory fac )
       java.net.URLConnection openConnection( ) throws
       java.io.IOException final java.io.InputStream openStream( )
       throws java.io.IOException boolean sameFile( java.net.URL other
       ) java.lang.String toExternalForm( ) java.lang.String toString(
       )
       *****************************************************
       Page 1 of 1