Strumenti Utente

Strumenti Sito


lpr-b:odpclass
no way to compare when less than two revisions

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.


lpr-b:odpclass [30/10/2007 alle 17:52 (18 anni fa)] (versione attuale) – creata Sonia Campa
Linea 1: Linea 1:
 +<code java>
 +/**
 + * @author Danelutto Marco
 + *
 + * Questa classe permette la serializzazione e deserializzazione di oggetti nei DatagramPacket. 
 + * Per spedire un oggetto serializzato in un DatagramPacket, si crea un oggetto ODP con il costruttore
 + * ODP(Object o). Successivamente si utilizza il metodo DatagramPacket getDatagramPacket(InetAddress address, int port) 
 + * per ottenere il datagram packet da spedire, che contiene l'oggetto o serializzato nel payload.
 + 
 + * Per ricevere un oggetto serializzato in un pacchetto, si usa il metodo statico ODP getODP(DatagramPacket dp) 
 + * per ottenere un ODP e quindi si invoca il metodo Object getObject() sull'oggetto ODP.
 + 
 + */
  
 +/*
 + * Created on Nov 13, 2003
 + *
 + * To change the template for this generated file go to
 + * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 + */
 +
 +package TFTPudp;
 +import java.net.*;
 +import java.io.*;
 +
 +
 +public class ODP {
 + /** 
 + * variabile utilizzata per memorizzare l'oggetto che deve essere 
 + * (o che e' stato) serializzato mediante il DatagramPacket.
 + */
 +        private Object o = null;
 +
 +        /** 
 +         * costruttore per la creazione di un ODP 
 +         * Questo costruttore si usa per creare un pacchetto da spedire.
 +         * @param o l'oggetto da serializzare nel pacchetto
 +         */
 +        public ODP(Object o) {
 +                this.o = o;
 +        }
 +        
 +        /**
 +         * creazione di un oggetto ODP a partire da un pacchetto DatagramPacket. Si passa il datagram packet come parametro 
 +         * e da questo si ottiene l'oggetto che era stato incaspulato come payload
 +         * @param dp  il DatagramPacket da cui si crea l'oggetto ODP
 +         * @return l'oggetto ODP con l'object deserializzato in o
 +         */
 +        public static ODP getODP(DatagramPacket dp) {
 +                ODP o = null;
 +                try {
 +                        ByteArrayInputStream bis = new ByteArrayInputStream(dp.getData());
 +                        ObjectInputStream ois = new ObjectInputStream(bis);
 +                        o = new ODP(ois.readObject());
 +                } catch (IOException e) {
 +                        e.printStackTrace();
 +                } catch (ClassNotFoundException e) {
 +                        e.printStackTrace();
 +                }
 +                return o;
 +        }
 +
 +        /**
 +         * metodo per ottenere un DatagramPacket dall'oggetto ODP
 +         * @param addr l'indirizzo da utilizzare per la spedizione del pacchetto
 +         * @param port porta destinazione per il pacchetto
 +         * @return il datagram packet con l'oggetto serializzato nel payload
 +         */
 +        public DatagramPacket getDatagramPacket(InetAddress addr, int port) {
 +                ByteArrayOutputStream bos = new ByteArrayOutputStream();
 +                ObjectOutputStream oos;
 +                try {
 +                        oos = new ObjectOutputStream(bos);
 +                        oos.writeObject(o);
 +                } catch (IOException e) {
 +                        e.printStackTrace();
 +                }
 +                byte[] buf = bos.toByteArray();
 +                DatagramPacket dp = new DatagramPacket(buf, buf.length, addr, port);
 +                return (dp);
 +        }
 +
 +        /**
 +         * utilizzata per prelevare l'oggetto "deserializzato" dal pacchetto
 +         * @return l'oggetto deserializzato dalla getODP(DatagramPacket) (o memorizzato mediante la ODP(Object)
 +         
 +         */
 +        public Object getObject() {
 +                return o;
 +        }
 +
 +}
 +
 +</code>
lpr-b/odpclass.txt · Ultima modifica: 30/10/2007 alle 17:52 (18 anni fa) da Sonia Campa

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki