Strumenti Utente

Strumenti Sito


lpr-b:receiver
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:receiver [13/11/2007 alle 19:01 (18 anni fa)] (versione attuale) – creata Marco Danelutto
Linea 1: Linea 1:
 +<code java>
 +/*
 + * Created on Nov 21, 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.io.FileOutputStream;
 +import java.net.DatagramPacket;
 +import java.net.DatagramSocket;
 +import java.util.logging.Logger;
 +
 +/**
 + * @author Danelutto Marco
 + *
 + * Questa classe <8F> la classe che implementa il ricevitore del file. 
 + * Va invocata con il nome del file da ricevere come parametro
 + 
 + */
 +public class Receiver {
 +
 +        public static void main(String[] args) {
 +                Logger log = Logger.getLogger("TFTPudp"); 
 +                try {
 +                        String nomeFile = ""; 
 +                        try {
 +                                nomeFile = args[0];
 +                        } catch(ArrayIndexOutOfBoundsException e) {
 +                                nomeFile = "dummy.txt";
 +                        }
 +                        // apertura del file per la scrittura ...
 +                        FileOutputStream fd = new FileOutputStream(nomeFile);
 +                        // creazione del datagram socket per la ricezione, si usa la porta definita nel Sender
 +                        DatagramSocket ds = new DatagramSocket(Sender.PORT);
 +                        boolean ancora = true;
 +                        int seqNo = 0;
 +                        do {
 +                                // ricezione di un pacchetto
 +                                DatagramPacket dp = new DatagramPacket(new byte[1024],1024);
 +                                ds.receive(dp);
 +                                log.info("Ricevuto pacchetto ");
 +                                // parsing del pacchetto
 +                                ODP odp = ODP.getODP(dp);
 +                                TFTPmessage msg = (TFTPmessage) odp.getObject();
 +                                log.info("Numero di sequenza "+msg.nSeq);
 +                                if(msg.nSeq == seqNo) { // solo nel caso non sia un duplicato, lo scrivo nel file
 +                                        fd.write(msg.buffer,0,msg.buffer.length);
 +                                        seqNo++;
 +                                        ancora = msg.more;
 +                                }
 +                                // questa e' solo per vedere se funziona ... 
 +                                Thread.sleep(1200);
 +                                // preparazione del messaggio di ACK
 +                                TFTPmessage ack = new TFTPmessage(seqNo-1,null,0,msg.more);
 +                                ODP ackp = new ODP(ack);
 +                                // spedizione 
 +                                ds.send(ackp.getDatagramPacket(dp.getAddress(),dp.getPort()));
 +                                log.info("Spedito ack "+(seqNo-1));
 +                        } while(ancora);
 +                } catch(Exception e) {
 +                        e.printStackTrace();
 +                }
 +        }
 +}
 +</code>
lpr-b/receiver.txt · Ultima modifica: 13/11/2007 alle 19:01 (18 anni fa) da Marco Danelutto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki