Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


APLICATII DE RETEA - JAVA

java



+ Font mai mare | - Font mai mic



APLICATII DE RETEA - JAVA

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( )



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1120
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved