import sun.net.ftp.*;
import sun.net.*;
import java.io.*;
// Definisco la classe con i metodi per gestire la connessione con il
// server (segnale,trasmissione,login)
public class FTPapp extends FtpClient {
// Definisco la variabile che conterra l'indirizzo IP del server
private String serverName;
// Login per il server
private String userName;
// Password per il server
private String userPassword;
// Definizione della classe con IP server, login e password passati in fase di inizializzazione
private int port;
public FTPapp (String serverName, String userName, String userPassword, int port) throws Exception
{
this.port=port;
this.serverName = serverName;
this.userName = userName;
this.userPassword = userPassword;
}
// Metodo per aprire la connessione con il SERVER
public boolean connServer() {
try {
openServer(serverName,port);
}
catch (IOException e)
{
System.out.println(e.toString());
return (false);
}
return (true);
} // Metodo per loggarsi sul SERVER
public boolean loginServer() {
try {
login(userName, userPassword);
}
catch (IOException e)
{
System.out.println(e.toString());
return (false);
}
return (true);
}
// Metodo Put per la trasmissione dati da CLIENT a SERVER
public boolean putFile(String clientFile,String clientPath,String remotePath,String sTipoTrasm) {
try {
// Trasmissione fatta in formato ASCII/Binary()
if (sTipoTrasm.equals("B")) {
// Trasmissione in binario se la variabile è valorizzata a B
binary();
} else {
// Trasmissione in formato ASCII se la variabile è valorizzata diversamente da A
ascii();
}
// Nome del file dopo la copia sul server, nel caso in cui si voglia lasciare lo stesso
// nome basta passarli clientFile anche come nome nel put("...")
// Canale di Output in remoto
TelnetOutputStream os=(TelnetOutputStream) put(remotePath + clientFile);
// Definisco il file da trasferire
File file_in = new File(clientPath + clientFile);
// Apro un canale di input
FileInputStream is = new FileInputStream(file_in);
int c;
int total_bytes=0;
byte[] bytes = new byte[1024];
// Leggo dal canale di input e scrivo su quello di output (in remoto)
while((c=is.read(bytes))!=-1)
{
total_bytes +=c;
os.write(bytes,0,c);
}
// Chiudo i canali di comunicazione e la connessione server
is.close();
os.close();
closeServer();
return (true);
}
catch (IOException e)
{
System.out.println(e.toString());
return (false);
}
}
}