Aplica]ii de re]ea

APLICA}II DE RE}EA
Pachetul java.net Clase
ContentHandler DatagramPacket DatagramSocket DatagramSocketImpl HttpURLConnection InetAddress MulticastSocket ServerSocket Socket SocketImpl URL URLConnection URLEncoder URLStreamHandler

Excep]ii
BindException ConnectException MalformedURLException NoRouteToHostException ProtocolException SocketException UnknownHostException UnknownServiceException

Interfe]e
ContentHandlerFactory FileNameMap SocketImplFactory URLStreamHandlerFactory

1

45.sun. pentru a crea o instan]\ a unui obiect de tip InetAddress trebuie folosit\ una din metodele statice : getLocalHost. Parametrul host poate fi .net.67.fie un [ir reprezentând adresa IP a ma[inii static java.Folosirea adreselor IP (Internet Protocol) Clasa InetAdress Furnizeaz\ mecanismul prin intermediul c\ruia sunt manipulate adresele IP. Comunicarea prin protocoale orientate pe conexiune Un protocol este o combina]ie de reguli de comunica]ie [i formate de mesaje care trebuie respectate de calculatoarele legate în re]ea pentru a schimba date. (Dac\ un calculator este conectat la mai multe re]ele el trebuie s\ aib\ câte o adres\ IP pentru fiecare re]ea la care este conectat).InetAddress getByName( java. Metode byte[] getAddress( ) Returneaza adresa efectiva reprezentat\ de obiectul respectiv într-un vector de 4 octe]i.net.%d” Ex: “123.com . Ex: [123. 45. getAllByName sau getByName. care apeleaz\ la rândul lor cnstructorii priva]i ai clasei.net.UnknownHostException Ex: xyz@thor.String host ) throws java.lang.%d.InetAddress[] getAllByName( java.89” java.ro boolean isMulticastAddress( ) boolean equals( java. 67.lang.String toString( ) Intrucât acesat\ clas\ nu are constructor public.lang.String getHostName( ) Returneaz\ numele simbolic al adresei respective static java. Scopul 2 .Object obj ) static java.net.fie numele ma[inii ex: java.InetAddress getLocalHost( ) throws java.lang.net.lang.lang.%d.UnknownHostException Determin\ toate adresele unui claculator. int hashCode( ) java.net.UnknownHostException Construie[te adresa IP a unui calculator.infoiasi.String getHostAddress( ) Returneaz\ adresa efectiv\ sub forma unui [ir “%d.String host ) throws java. 89] java.Cel mai semnificativ octet se g\se[te în getAddress() [0].

cele care ini]iaz\ conversa]ia • programe server .Aplica]ii de re]ea primar al protocoalelor este de a permite comunica]ia între calculatoare. num\rul de port pe care serverul prime[te cererile Un soclu Java poate lucra în dou\ moduri : ν direct . adresa gazdei pe care ruleaz\ aplica]ia server 4. indiferent de re]ea sau de hardware-ul calculatoarelor legate în re]ea. orice conexiune între dou\ programe care comunic\ prin re]ea este determinat\ unic de 4 elemente : 1. unul din protocoalele de baz\ ale familiei TCP/IP. Modul de lucru cu soclurile se încadreaz\ în modelul client/server de scriere de aplica]ii. Orice conexiune este unic determinat\ de cele dou\ socluri plasate la cele dou\ capete ale conexiunii. adresa gazdei pe care ruleaz\ aplica]ia client 2.implicit (suficient pentru majoritatea aplica]iilor) 3 . stabilit de c\tre un protocol pentru transmiterea corect\ [i în ordine a mesajelor între calculatoare. CONEXIUNE Calculator soclu soclu canale de comunica]ie Calculator Versiunea standard de Java folose[te pentru implementarea comunica]iei pe baz\ de conexiuni protocolul TCP (Transmission Control protocol). num\rul de port al aplica]iei client 3. O conexiune reprezint\ un canal sigur de comunica]ie în re]ea. model în care aplica]iile se împart în dou\ categorii : • programe client .cele care ofer\ servicii programelor client In virtutea acestui fapt. respectiv recep]ia datelor. O conexiune este format\ din dou\ fluxuri de date unidirec]ionale folosite pentru comunica]ie precum [i din dou\ socluri (socket) care permit trimiterea.

OutputStream getOutputStream( ) throws java.io.io.IOException Accept\ realizarea unei conexiuni protected abstract int available( ) throws java.FileDescriptor getFileDescriptor( ) protected java. int port 4 .io.IOException Returneaz\ nr de octe]i care pot fi citi]i f\r\ a bloca conexiunea protected abstract void bind( java. Metode protected java.String toString( ) protected abstract void accept( java.net.Metodele acestei clase pun la dipozi]ie instrumente de comunica]ie direct\.SocketImpl s ) throws java.ν cu facilit\]i speciale pe soclu.io.net.io.IOException Leag\ conexiunea de un anumit partener specificat prin adresa IP si port protected abstract void close( ) throws java.net.io. protected int port The port number on the remote host to which this socket is connected.InetAddress getInetAddress( ) protected abstract java. Clasa SocketImpl Variabile protected java.net.InetAddress address The IP address of the remote end of this socket.IOException protected int getLocalPort( ) protected abstract java.io.io. protected int localport The local port number to which this socket is connected.IOException protected int getPort( ) java.net.io.lang.InputStream getInputStream( ) throws java. protected java. folosit de aplica]iile care necesit\ comunicarea peste un zid de protec]ie (firewall) sau prin intermediul unui server proxy Implementarea unui soclu (client sau server) se realizeaz\ prin extinderea clasei abstracte SocketImpl.IOException Inchide o conexiune protected abstract void connect( java.InetAddress host.io.InetAddress address. Pentru a crea un soclu cu facilit\]i speciale este necesar\ redefinirea metodelelor din aceast\ clas\.FileDescriptor fd The file descriptor object for this socket. int port ) throws java.

Structura unei aplica]ii client bazate pe conexiuni 1. boolean stream ) throws java. If the stream argument is false.String host.io.lang.io. public Socket( java.Aplica]ii de re]ea ) throws java.String host.lang. Faza final\ a execu]iei Clasa Socket Constructori protected Socket( ) Creeaz\ o conexiune f\r\ nici un partener specificat protected Socket( java. Este ultimul utilizator al soclului ? Da → Inchidere soclu 7.lang.io.IOException 5 .Throwable Programe de tip client Clasa Socket abstractizeaz\ no]iunea de soclu client (numit în general soclu) [i este responsabil\ de majoritatea opera]iilor necesare comunica]iei în re]ea. Creare soclu de comunicare [i stabilire conexiune 4.InetAddress host.IOException protected abstract void listen( int backlog ) throws java.IOException Stabile[te num\rul maxim de conexiuni admise protected native java.IOException Creates a socket and connects it to the specified port number at the specified IP address. Ini]ializ\ri 2. int port ) throws java.net.lang. programul client poate s\ ini]ieze o conexiune (prin constructor) [i s\ implementeze comunica]ia prin re]ea. int port ) throws java. int port ) throws java.io. this creates a stream socket.SocketException public Socket( java. Prin instan]ierea unui obiect de tip Socket.io.io.SocketImpl impl ) throws java. it creates a datagram socket. int port.lang.IOException protected abstract void create( boolean stream ) throws java. int port.String host.io.net.IOException If the stream argument is true.net. boolean stream ) throws java.InetAddress address.Object clone( ) throws java.net.io.lang. Ob]inere fluxuri de comunicare cu partenerul 5. java.net. Are facilit\]i speciale de soclu ? Da → Schimbare comportament prin SocketImpl 3. public Socket( java.UnknownHostException. Prelucr\ri specifice aplica]iei client 6.IOException public Socket( java.IOException Realizeaz\ o conexiune cu un anumit partener protected abstract void connect( java.CloneNotSupportedException protected void finalize( ) throws java.

IOException Ob]ine fluxul de intrare de la care pot fi citite datele din acest soclu.net.lang.net.String toString( ) Programul tip server Serverul este programul care ascult\ cererile venite de la clien]i [i le ofer\ serviciul pentru care a fost creat.io.InetAddress getLocalAddress( ) int getLocalPort( ) java.InputStream getInputStream( ) throws java. public Socket( java.net.lang.InetAddress localAddr.io.net. int localPort ) throws java.IOException void setSoLinger( boolean on. int val ) throws java.io. int port.SocketImplFactory fac ) throws java.InetAddress getInetAddress( ) java. int localPort ) throws java.IOException Metode java.SocketException synchronized void close( ) throws java.OutputStream getOutputStream( ) throws java.net.io.IOException int getSoLinger( ) throws java.net.public Socket( java. Identificarea serverelor se face prin intermediul portului pe care serverul a[teapt\ cererile de conexiune venite din partea clien]ilor.InetAddress address.SocketException boolean getTcpNoDelay( ) throws java.net. Exemple de numere de porturi standardizate : Serviciu Po[ta electronic\ Transfer de fi[iere Telnet Finger Port asociat 25 21 23 79 6 .String host. Majoritatea serviciilor foarte des folosite în Internet au asociate porturi standardizate.SocketException void setTcpNoDelay( boolean on ) throws java. pentru a permite clien]ilor s\ opereze cu diferite servere în vederea ob]inerii unui serviciu.IOException Ob]ine fluxul de ie[ire prin care pot fi scrise datele int getPort( ) static synchronized void setSocketImplFactory( java.net.SocketException synchronized void setSoTimeout( int timeout ) throws java.io.io.net.net. java.InetAddress localAddr.net. java.io.net.io.SocketException java. java.SocketException synchronized int getSoTimeout( ) throws java.IOException The Socket will bind() to the local address and port supplied. int port.

Acest lucru se realizeaz\ prin folosirea mai multor fire de execu]ie. Are facilit\]i speciale de soclu ? Da → Schimbare comportament prin SocketImpl 3. Ini]ializ\ri 2. Creare soclu server pentru ascultare cereri 4. Implicit acest num\r este 50. Ini]ializare fir tratare conexiune 9. clasa care implementeaz\ soclul programului server. dar poate fi specificat ca argument al constructorului. GOTO 4 7 . Creare fir de execu]ie pentru tratarea conexiunii 8. fiecare fir de execu]ie ocupându-se cu un singur client. De asemenea este prev\zut un mecanism pentru a limita num\rul de cereri care pot fi prelucrate în paralel [i deci [i num\rul firelor de execu]ie care ruleaz\ la un moment dat. Inchidere soclu comunicare 11. Structura unei aplica]ii server bazate pe conexiuni 1. Ascultare cereri conexiuni 6. Aceste lucruri se realizeaz\ prin constructorul clasei ServerSocket. Acceptare cerere [i ob]inere soclu pentru comunicare 7. Orice cerere nou\ va fi respins\ dac\ num\rul de cereri prelucrate are valoarea maxim\ specificat\. Un lucru esen]ial în proiectarea unei aplica]ii server este faptul c\ aceasta trebuie construit\ în a[a fel încât s\ poat\ prelucra în paralel cererile clien]ilor. Ascultarea continu\ ? Nu → Inchidere soclu Faza final\ 5. Prelucrare conform\ cu protocolul textului 10.Aplica]ii de re]ea WWW Ecou Execu]ie la distan]\ (rexec) POP3 (Post Office Protocol) 80 7 512 110 Primul lucru pe care trebui s\-l fac\ un program server este s\ se asocieze portuluistabilit la momentul proiect\rii aplica]iei [i s\ ini]ieze ascultarea cererilor de servicii venite de la clien]i. Terminare fir tratare conexiune 8.

unul din protocoalele de baz\ ale familiei TCP/IP.io.lang.IOException Create a server with the specified port.net.net.IOException public ServerSocket( int port. A port of 0 creates a socket on any free port. int backlog.SocketImplFactory fac ) throws java. The maximum queue length for incoming connection indications (a request to connect) is set to 50.IOException java.io.IOException synchronized int getSoTimeout( ) throws java.InetAddress getInetAddress( ) int getLocalPort( ) static synchronized void setSocketFactory( java. listen backlog.io. datagramele sunt transportate prin re]ea folosind prototcolul UDP (User Datagram Protocol). inclusive.net.io. 8 . In cadrul implement\rii standard Java.IOException void close( ) throws java.io.String toString( ) Comunica]ia folosind datagrame Datagramele reprezint\ o cantitate de informa]ii trimis\ prin intermediul unui pachet independent fa]\ de alte informa]ii. int backlog ) throws java. The port must be between 0 and 65535. If bindAddr is null. Metode java.SocketException java.io. and local IP address to bind to.IOException Creates a server socket on a specified port.Clasa ServerSocket Constructori public ServerSocket( int port ) throws java.net.net. Fiecare pachet este transmis de la o ma[in\ la alta doar pe baza informa]iilor con]inute de el însu[i. public ServerSocket( int port. it will default accepting connections on any/all local addresses. Pachete trimise de la o destina]ie c\tre aceea[i surs\ pot ajunge pe rute diferite [i în orice ordine. java.IOException synchronized void setSoTimeout( int timeout ) throws java.Socket accept( ) throws java.InetAddress bindAddr ) throws java.io. 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.

Creare soclu datagrame 4. nu se stabile[te o leg\tur\ permanent\ între client [i server. Este ultimul utilizator al soclului ? Nu → GOTO 4 Da → 9 . folosind datagrame. De fapt. iar server va fi aplica]ia care prime[te pachete de tip cerere [i retrimite pachete cu r\spunsuri la cererile primite. Pentru datagrame nu exist\ destina]ii implicite. chiar no]iunile de client [i server î[i pierd semnifica]iile. Ini]ializ\ri 2. acese informa]ii sunt concentrate în obiecte de tip DatagramPacket. întrucât ambele folosesc pentru comunicare acela[i tip de soclu. Structura unei aplica]ii bazate pe datagrame 1. Are facilit\]i speciale de soclu ? Da → Schimbare comportament prin DatagramSocketImpl 3.Aplica]ii de re]ea Avantaje: • viteza de transfer mai mare • adaptarea la condi]iile de moment ale re]elei (congestii. a[adar în fiecare datagram\ trebuie specificate: • adresa destina]ie • num\rul portului la care se trimite datagrama • con]inutul datagramei In Java. In cazul în care un pachet se pierde. clientul va retransmite cererea dup\ un anumit interval de timp. Clientul va fi aplica]ia care încapsuleaz\ o cantitate de date (cerere) într-un pachet [i o transmite unui partener. implementat de clasa DatagramSocket. leg\turi temporar indisponibile. etc) Dezavantaje : lucru mai dificil Diferen]a fa]\ de comunicarea printr-un canal sigur oferit\ de metoda comunica]iei prin conexiuni este c\. Care este ac]iunea urm\toare ? Transmisie Producere date Incapsulare date in pachet Trimitere date Recep]ie Creare pachet recep]ie date Recep]ie date Prelucrare date 5.

java.SocketException synchronized void setSoTimeout( int timeout ) 10 . java.net. Metode java.net.net.InetAddress iaddr ) synchronized byte[] getData( ) Returneaz\ datele care sunt trimise sau care au fost recep]ionate synchronized void setData( byte [] ibuf ) synchronized int getLength( ) Returneaz\ lungimea pachetului care va fi trimis sau care a fost recep]ionat synchronized void setLength( int ilength ) synchronized int getPort( ) Returneaz\ num\rul portului la care datagrama este trimis\ sau de la care a fost recep]ionat\ synchronized void setPort( int iport ) Clasa DatagramSocket Constructori public DatagramSocket( ) throws java. int ilength ) Construie[te un obiect pentru recep]ionarea pachetelor de lungime ilength . int ilength.length public DatagramPacket( byte [] ibuf. The local port must be between 0 and 65535 inclusive. Obs: ilength <= ibuf.InetAddress getLocalAddress( ) int getLocalPort( ) synchronized int getSoTimeout( ) throws java.net. bound to the specified local address. Metode synchronized java.net. public DatagramSocket( int port.net.SocketException Constructs a datagram socket and binds it to any available port on the local host machine. int iport ) Construie[te un obiect pentru trimiterea de pachete de lungime ilength spre gazda [i portul specificate. public DatagramSocket( int port ) throws java.net.InetAddress laddr ) throws java.net.InetAddress getAddress( ) Returneaz\ adresa IP la care datagrama este trimis\ sau de la care a fost recep]ionat\ synchronized void setAddress( java.SocketException Creates a datagram socket.SocketException Constructs a datagram socket and binds it to the specified port on the local host machine.net.Inchidere soclu Faza final\ Clasa DatagramPacket Constructori public DatagramPacket( byte [] ibuf.InetAddress iaddr.

DatagramPacket p ) throws java.io.IOException 11 .SocketException void close( ) synchronized void receive( java.IOException void send( java.io.net.Aplica]ii de re]ea throws java.DatagramPacket p ) throws java.net.net.

lang. dac\ este diferit fa]\ de cel implicit folosit de protocol • directorul în care se afl\ documentul • numele fi[ierului în care este plasat documentul Mai mult.lang.Object getContent( ) throws java.String spec ) throws java.lang.lang.IOException final java.String getFile( ) java. Ele permit identificarea unic\ a unui document pe baza urm\torilor parametri : • protocolul prin care se transfer\ documentul • serverul care g\zduie[te documentul • num\rul de port.String getRef( ) static synchronized void setURLStreamHandlerFactory( java.Transferul de documente din WWW Adresele prin care sunt localizate documentele se numesc URL-uri (Uniform Resource Locator).IOException boolean sameFile( java.lang.String toString( ) 12 ...MalformedURLException public URL( java. int port.IOException java.lang.lang.InputStream openStream( ) throws java.String file ) throws java.String getHost( ) int getPort( ) java. Folosirea adreselor URL se realizeaz\ prin intermediul clasei URL.lang.MalformedURLException .lang.lang.net.net.net.URLConnection openConnection( ) throws java.net.URL other ) java.String toExternalForm( ) java.String protocol.net.lang. este posibil\ identificarea chiar a unor sec]iuni din documentul respectiv. java.String getProtocol( ) java.io. java.io.URLStreamHandlerFactory fac ) java.io.String host. Clasa URL Constructori public URL( java.io. Metode final java.