Salve a tutti
Devo creare un'applicazione client-server in cui il client invia un file e il server lo riceve e lo salva su un database MySQL. Il file viene ricevuto, ma l'applicazione si blocca quando deve salvare il contenuto nel db e non riesco a capire perchè.
Parte Client
codice:
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Upload{
public static void main(String[] args){
try{
Socket sDati= new Socket("LocalHost",12345);
String linea;
BufferedReader inp=new BufferedReader(new InputStreamReader(sDati.getInputStream()));
DataOutputStream outS= new DataOutputStream(sDati.getOutputStream());
JFileChooser scegliFile=new JFileChooser();
scegliFile.showOpenDialog(null);
File fileUp=scegliFile.getSelectedFile();
outS.writeBytes("Pippo\n");
outS.writeBytes(fileUp.getName()+"\n");
outS.writeLong(fileUp.length());
while((linea=inp.readLine())!=null){
outS.writeBytes(linea+"\n");
}
outS.close();
System.out.println("finito");
}
catch(Exception e){
System.out.println("Err "+e.getMessage());
}
}
}
Parte Server
codice:
import java.io.*; //per aprire gli stream
import java.net.*; //per creare i socket
import java.util.*; //per StringTokenizer
import java.sql.*; //per interagire con il db
import javax.swing.*; //per JOptionPane
public class Receive{
public static void main(String[] args) throws Exception{
try{
Connection c = null;
Statement st = null;
try{
//scelta del driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
try{
//connessione al db
c = DriverManager.getConnection("jdbc:mysql://localhost:3306/progetto?","root","");
st = c.createStatement();
ServerSocket sClient= new ServerSocket(12345);
for(int i=1;;i++){
Socket sDati= sClient.accept();
System.out.println("client "+i+"...");
BufferedReader in=new BufferedReader(new InputStreamReader(sDati.getInputStream()));
DataInputStream input= new DataInputStream(sDati.getInputStream());
String user=in.readLine();
String fileName=in.readLine();
long fileLength=input.readLong();
PreparedStatement pstmt = c.prepareStatement("INSERT INTO files (nome_utente, contenuto) "+"VALUES (?, ?)");
pstmt.setString(1, user);
pstmt.setBinaryStream (2, sDati.getInputStream(), (int)fileLength);
pstmt.executeUpdate();
in.close();
pstmt.close();
}
}
catch(SQLException e){
System.out.println("Errore di connessione al database");
}
}
catch(Exception e){
System.out.println("Err "+e.getMessage());
}
}
catch(Exception e){
System.out.println("Err "+e.getMessage());
}
}
}
Grazie in anticipo