CATEGORII DOCUMENTE |
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 |
Vizualizari: 1120
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved