1 / 23

Conexiuni UDP

Conexiuni UDP. obiectele Socket sunt implementate prin clasa DatagramSocket datele sunt transmise sub forma unor pachete numite datagrame, care specifică adresa destinatarului sunt doua tipuri de datagrame dupa functionalitate: pentru transmitere pentru receptionare.

metta
Download Presentation

Conexiuni UDP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conexiuni UDP • obiectele Socket sunt implementate prin clasa DatagramSocket • datele sunt transmise sub forma unor pachete numite datagrame, care specifică adresa destinatarului • sunt doua tipuri de datagrame dupa functionalitate: • pentru transmitere • pentru receptionare

  2. Structura unei aplicatii UDP Pentru trimitere de pachete o aplicaţie se poate limita la următoarele operaţiuni: crearea unei obiect de tip DagramSocket invocând un constructor fără parametrii; crearea unui obiect de tip DatagramPacket de tip transmitere cu datele transmise; trimiterea pachetului prin invocarea metodei send a obiectului socket. Pentru recepţionarea de pachete etapele minimale sunt: crearea unui obiect DatagramSocket conectat la un anumit port; crearea unui obiect DatagramPacket pentru recepţia unei datagrame; recepţia datagramei şi preluarea datelor din datagramă

  3. Receptare - Constructori datagrama • public DatagramPacket(byte[] buf, int offset, int length) • public DatagramPacket(byte[] buf, int length)

  4. Trimitere - Constructori datagrama • public DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) • public DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) throws SocketException • public DatagramPacket(byte[] buf, int length, InetAddress address, int port) • public DatagramPacket(byte[] buf, int length, SocketAddress address) throws SocketException

  5. Creare socket - constructori: • public DatagramSocket() throws SocketException • public DatagramSocket(int port) throws SocketException • public DatagramSocket(int port, InetAddress laddr) throws SocketException

  6. Transmitere - receptie datagrame (metode DatagramSocket): • public void send(DatagramPacket p) throws IOException • public void receive(DatagramPacket p) throws IOException • public void setSoTimeout(int timeout) throws SocketException

  7. RMI (Remote Method Invocation)

  8. Arhitectura RMI RMI – un API Java care permite accesarea obiectelor Java de la distanţă (de pe altă maşină virtuală)

  9. Fluxul de operatiuni intr-o aplicatie RMI • Localizarea unui obiect la distanta cu ajutorul unui serviciu de nume: Registrul RMI • Crearea obiectelor stub si skeleton • Serializarea metodelor la distanta invocate si a parametrilor lor cu ajutorul obiectului stub • Transmiterea prin flux a metodelor invocate si a parametrilor catre obiectul skeletonsi deserializarea lor • Trimiterea rezultatelor executiei de catre skeleton spre stub • Primirea rezultatelor de catre stub

  10. Crearea unei aplicatii simple RMI • Definirea claselor la distanta. Acestea extind java.rmi.server.UnicastRemoteObject • Definirea interfetei Remote pentru clasa la distanta. Interfata specifica metodele apelabile la distanta, metode capabile sa arunce java.rmi.RemoteException • Crearea obiectului stub cu ajutorul utilitarului rmic • Crearea si lansarea registrului RMI avand definite intrari de obiecte • Lansarea aplicatiei server • Definirea claselor aplicatiei client • Accesarea registrului de nume la distanta si obtinerea referintelor la obiectele la distanta • Lansarea aplicatiei client. Invocarea metodelor la distanta

  11. Clase si interfete utilizate public interface Remote; Este o interfata de marcaj care indica utilizare de cod inafara JVM curent. Este extinsa de interfetele client. public class RemoteException extends IOException; Interfata creata pentru a gestiona erorile aparute pe timpul executarii metodelor la distanta. Tipuri de erori ce pot aparea: erori de comunicare cu serverul, erori de transmitere parametrii, erori generate de protocoalele de comunicare public class UnicastRemoteObject extends RemoteServer; Ofera suport pentru crearea si exportul obiectelor la distanta. Referintele la obiecte sunt valide pe durata de viata a procesului care le creaza.

  12. public final class Namingextends Object; // Utilizeaza serviciul de nume pentru localizarea şi înregistrarea obiectelor “rmi://host:port/name” public static Remotelookup(String name) throws NotBoundException, MalformedURLException, RemoteException; // se conecteaza la serviciul specificat si extrage o referinta la obiectul indicat de serviciu public static void bind(String name, Remote obj) throws AlreadyBoundException, MalformedURLException, RemoteException; public static void rebind(String name, Remote obj) throws RemoteException, MalformedURLException public static void unbind(String name) throws RemoteException, NotBoundException, MalformedURLException public static String[] list(String name) throws RemoteException, MalformedURLException

  13. public final class LocateRegistry extends Object; // furnizeaza metode pentru obtinerea referintelor la distanta pentru registrii de nume public static RegistrycreateRegistry(int port) throws RemoteException public static RegistrygetRegistry() throws RemoteException public static RegistrygetRegistry(int port) throws RemoteException public static RegistrygetRegistry(String host) throws RemoteException public static RegistrygetRegistry(String host, int port) throws RemoteException

  14. public interface Registryextends Remote; //contine informatii de nume nu si de adresa Remotelookup(String name) throws RemoteException, NotBoundException, AccessException; //intoarce o referinta la distanta catre serviciul inregistrat sub numele specificat void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException; //stocheaza o referinta a ob. la dist. specificat in registru sub numele nume String[] list() throws RemoteException, AccessException; //intoarce lista completa a serviciilor doar prin nume nu si prin adresa

  15. JDBC

  16. Clasificare drivere http://developers.sun.com/product/jdbc/drivers Tipuri de drivere: Nivel 1: Jdbc-Odbc – utilizeaza puntea Jdbc-Odbc prin mecanismul ODBC de conectare la o baza de date Nivel 2: nativ Java API – combina cod nativ cu cod Java pentru convertirea cererilor JDBC in comenzi proprietar BD Nivel 3: Database Midleware – drivere pure Java care folosesc un protocol intermediar (vendor protocol) pentru conectare la BD Nivel 4: Pure Java Driver – conectare directa la BD prin cod Java utilizand un protocol specific bazei de date

  17. Accesarea unei baze de date utilizand JDBC • Inregistrarea driverului • Crearea conexiunii la BD • Interogarea BD • Procesarea rezultatelor • Inchiderea conexiunii

  18. Inregistrarea driverului JDBC public static void registerDriver(Driver driver) throws SQLException try { DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); } catch(Exception e){} public static Class<?> forName(String className) throws ClassNotFoundException try{ "com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(Exception e){}

  19. Crearea conexiunilor la baza de date Sirul de conectare: jdbc:subprotocol:BazaDeDate "jdbc:odbc:legatura" "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=cale" "jdbc:sqlserver://host\\server:1433;database=baza;user=sa;password=parola;" "jdbc:mysql://host:3306/baza" "jdbc:oracle:thin:@ip-host:1521:instanta" public static ConnectiongetConnection(String url) throws SQLException public static ConnectiongetConnection(String url, String user, String password) throws SQLException

  20. Interogarea – Obiecte Statement • Sunt obiecte utilizate pentru executarea instructiunilor SQL • Tipuri de obiecte: public interface Statement; // Executarea instructiunilor statice public interface PreparedStatement extendsStatement; // Executarea instructiunilor precompilate public interface CallableStatement extends PreparedStatement; // Executarea procedurilor stocate pe serverul BD

  21. Crearea obiectelor Statement StatementcreateStatement() throws SQLException StatementcreateStatement(intresultSetType, intresultSetConcurrency) throws SQLException StatementcreateStatement(intresultSetType, intresultSetConcurrency, intresultSetHoldability) throws SQLException - tipulcursorului (deplasabil/nedeplasabil, senzitiv/nesenzitiv) ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE - permisiunemodificariconcurente (nu/da) ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE - mentinere cursor dupaefectuarea (comiterea) tranzactiilor (nu/da) ResultSet.HOLD_CURSORS_OVER_COMMIT ResultSet.CLOSE_CURSORS_AT_COMMIT

  22. Mentinerea cursorului (holdability) poate fi reglementata si prin metodaConnection: void setHoldability (int holdability)throws SQLException; int getHoldability() throws SQLException; si se poate testa prin metoda ResultSet: int getHoldability()throws SQLException;

More Related