PDA

View Full Version : [JAVA] - Bufferizzazione dati binari FTP Client/server


fbcyborg
05-09-2005, 16:24
Ciao a tutti,
ho implementato i comandi get e put (RETR e STOR del protocollo FTP) sul mio client e sul mio server FTP.
Per il get ho utilizzato una tecnica di bufferizzazione, per il put un'altra. Almeno questa è la mia impressione.
Questo perchè non sono riuscito ad utilizzare le stesse tecniche in modo duale.

Nel GET: //prende un file dal server
Socket connectionSocket = server.accept();

BufferedInputStream fileFromServer = new BufferedInputStream
(connectionSocket.getInputStream());

leggiByte(fileFromServer,fileOut);
Nel PUT:// manda un file sul server

RandomAccessFile f = new RandomAccessFile(sendFile,"r"); // Apertura del File
byte[] input = new byte[BUFFERSIZE]; // array per contenere il file bufferizzato
Socket welcomeSocket = server.accept();

PrintStream strToServer = new PrintStream(welcomeSocket.getOutputStream());

while (f.getFilePointer()<f.length()) {
f.read(input);
strToServer.write(input);
}
Leggi byte non fa altro che scrivere su file ciclando dati gli stream:
private static void leggiByte(BufferedInputStream fileFromServer,
PrintStream fileOut)
Come si vede (spero) nel primo caso utilizzo un BufferedInputStream e la bufferizzazione è data in pasto ai filtri di stream.. Mentre nel secondo caso (che definirei "manuale") utilizzo un mio buffer di byte di grandezza personalizzata.

Per favore avrei bisogno di qualche consiglio in merito, e di qualche considerazione su questi due metodi leggermente diversi (seppur duali).

CiaoCiao!