codice:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client_Progetto
{
Socket s;
public Client_Progetto() throws IOException
{
String indirizzoIP = "192.168.2.27";
int porta = 9876;
String destinazione = "C:\\prova\\";
// mi connetto al server
boolean connesso = connect(indirizzoIP,porta);
if (connesso == false)
{
System.out.println("*** ATTENZIONE: Non esiste alcun server sulla porta ***" + porta);
System.exit(0);
}
// avvio la ricezione del file
ricevi_File(destinazione);
}
// funzione per connettermi al server
public boolean connect(String ip,int porta)
{
boolean result = false;
try {
s = new Socket(ip,porta);
result = true;
System.out.println("*** CONNESSO CON SUCCESSO *** ");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public String[] acquisisci_parametri(ObjectInputStream ois)
{
String param_file[] = null;
try {
String param = (String)ois.readObject();
param_file = param.split(",");
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return param_file;
}
public void ricevi_File(String dest) throws IOException
{
System.out.println("* Inizio processo di ricezione");
String destinazione = dest;
int read = 0;
int tot = 0;
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
String [] param_file = acquisisci_parametri(ois);
String nome = param_file[0];
int dimensione = Integer.parseInt(param_file[1]);
// stream per il salvataggio del file su disco
File file = new File(destinazione+nome);
// apro outputStream
FileOutputStream fos = new FileOutputStream(file, true);
byte[] buf = new byte[1024];
System.out.println(" Ricevo: ");
// prendo il pacchetto di 1024 kb
try{
while ((read = ois.read(buf)) != -1) {
tot += read;
System.out.println(" - "+tot+ " byte");
// scrivo il pacchetto su disco
fos.write(buf, 0, read);
}
}catch(java.net.SocketException e)
{
if (tot == dimensione)
{
System.out.println("*** FILE RICEVUTO CON SUCCESSO ***");
}
else
{
System.out.println("*** ATENZIONE - c''è stato un problema!");
}
}
}
public static void main(String Args[]) throws IOException
{
new Client_Progetto();
}
}