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& | ||
+ | */ | ||
+ | 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(" | ||
+ | try { | ||
+ | String nomeFile = ""; | ||
+ | try { | ||
+ | nomeFile = args[0]; | ||
+ | } catch(ArrayIndexOutOfBoundsException e) { | ||
+ | nomeFile = " | ||
+ | } | ||
+ | // 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], | ||
+ | ds.receive(dp); | ||
+ | log.info(" | ||
+ | // parsing del pacchetto | ||
+ | ODP odp = ODP.getODP(dp); | ||
+ | TFTPmessage msg = (TFTPmessage) odp.getObject(); | ||
+ | log.info(" | ||
+ | if(msg.nSeq == seqNo) { // solo nel caso non sia un duplicato, lo scrivo nel file | ||
+ | fd.write(msg.buffer, | ||
+ | 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, | ||
+ | ODP ackp = new ODP(ack); | ||
+ | // spedizione | ||
+ | ds.send(ackp.getDatagramPacket(dp.getAddress(), | ||
+ | log.info(" | ||
+ | } while(ancora); | ||
+ | } catch(Exception e) { | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ |
lpr-b/receiver.txt · Ultima modifica: 13/11/2007 alle 19:01 (18 anni fa) da Marco Danelutto