codice:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFileChooser;
public class Server_Progetto {
ServerSocket serverSocket;
Socket socket;
// Questa è la funziona principale della classe server.
// Verrà richiamate nella main
public Server_Progetto() throws IOException {
// impostiamo la porta di comunicazione
int porta = 9876;
JFileChooser fileChooser = new JFileChooser();
int n = fileChooser.showOpenDialog(null);
File file = fileChooser.getSelectedFile();
String path_file = file.getAbsolutePath();
String nome = file.getName();
long dimensione = file.length();
System.out.println("Il nome del fileselezionato è: " +nome);
System.out.println("La sua dimensione : " +dimensione+ " byte");
System.out.println("Percorso: " +path_file);
socket = connessione(porta);
// Qui invio la directory del file da andare a prelevare
invia_File(path_file, nome, dimensione);
}
// Qui creo la funziona per la connessione al client
public Socket connessione(int porta) {
Socket sock = null;
try{
serverSocket = new ServerSocket(9876);
System.out.println("*** Attendo un client ***");
sock = serverSocket.accept();
}catch(UnknownHostException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
System.out.println("CONNESSIONE RIUSCITA CON SUCCESSO ");
return sock;
}
// Inviamo la posizione del file
public void invia_Parametri(String percorso, ObjectOutputStream oos){
try {
oos.flush();
oos.writeObject(percorso);
} catch (IOException e) {
e.printStackTrace();
}
}
// Adesso andremo a creare la funzione per l'invio del file. Tale funzione
// spacchetta il file in blocchi di 1024 byte e li invia al client
public void invia_File(String path_file,String nome,long dimensione) throws IOException
{
System.out.println("*** Inizio invio file");
String percorso = path_file;
FileInputStream fis = null;
ObjectOutputStream oos;
try{
fis = new FileInputStream(percorso);
oos = new ObjectOutputStream(socket.getOutputStream());
byte[] buf = new byte[1024];
int read,tot=0;
// invio i dati del file al client
invia_Parametri(percorso, oos);
System.out.println("iNVIATI: ");
oos.flush();
oos.flush();
while ((read = fis.read(buf)) != -1 ) {
tot += read;
System.out.println(" - "+tot+ " byte");
oos.write(buf, 0, read);
oos.flush();
}
System.out.println("*** FILE INVIATO CON SUCCESSO ***");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String Args[]) throws IOException
{
new Server_Progetto();
}
} // Fine Server_Progetto