Bonjour,
je cherche a faire un serveur de sauvegarde de fichiers avec le client qui va bien...
jusque la j'arrive bien a faire communiquer le serveur avec le client, j'arrive a envoyer un fichier unique mais lorsque j'essai d'envoyer tout une liste de fichier ma fonction de recuperation de fichier s'arrete de fonctionner mais je ne sais pas pourquoi ....
Merci d'avance pour votre aide!!
La ligne ou s'arrete de fonctionner le serveur est la suivante
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
Voici le serveur
[code]
import java.net.*;
import java.io.*;
import FonctionUtils.listerFichier;
public class FileServer {
public static void main (String [] args ) throws IOException {
String message="rien";
// create socket
ServerSocket servsock = new ServerSocket(13267);
while (true) {
System.out.println("Waiting...");
Socket sock = servsock.accept();
System.out.println("Accepted connection : " + sock);
BufferedReader reception = new BufferedReader(new InputStreamReader(sock.getInputStream()));
PrintWriter envoi = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())),true);
File RepertoireDuClient = new File("C:/Documents and Settings/HP_Administrateur/Mes documents/NetBeansProjects/DesktopApplication1/"+sock.getInetAddress().toString());
File DataDuClient = new File("C:/Documents and Settings/HP_Administrateur/Mes documents/NetBeansProjects/DesktopApplication1/"+sock.getInetAddress().toString()+"/"+sock.getInetAddress().toString()+".bin");
if (!RepertoireDuClient.exists())
{
RepertoireDuClient.mkdir();
DataDuClient.createNewFile();
System.out.println("creation du dossier client");
envoi.println("full");
message = reception.readLine();
System.out.println("Message du client : " +message);
if(message.equalsIgnoreCase("ok")){
String nbfichiers = reception.readLine();
int nbfic = Integer.parseInt(nbfichiers);
System.out.println("nombere de fichiers :" +nbfic);
for(int i=0;i<nbfic;i++){
System.out.println("Waiting... fichier :" +i);
envoi.println("ok");
int filesize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current = 0;
// receive file
byte [] mybytearray = new byte [filesize];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("C:/Documents and Settings/HP_Administrateur/Mes documents/NetBeansProjects/DesktopApplication1/"+sock.getInetAddress().toString()+"/"+sock.getInetAddress().toString()+".txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
System.out.println("dddd");
// thanks to A. Cádiz for the bug fix
do {
System.out.println("jhnjkjk");
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
System.out.println("iiiii"+ bytesRead);
if(bytesRead >= 0) current += bytesRead;
System.out.println("eeee"+ bytesRead);
} while(bytesRead > -1);
bos.write(mybytearray, 0 , current);
bos.flush();
long end = System.currentTimeMillis();
System.out.println(end-start);
bos.close();
}
}
}
}
}
}
/code
et voici le client
[code]
import java.net.*;
import java.io.*;
import FonctionUtils.listerFichier;
public class FileClient{
public static void main (String [] args ) throws IOException {
Socket sock = new Socket("127.0.0.1",13267);
String message="rien";
// create socket
while (true) {
System.out.println("Waiting...");
System.out.println("Accepted connection : " + sock);
BufferedReader reception = new BufferedReader(new InputStreamReader(sock.getInputStream()));
PrintWriter envoi = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())),true);
message = reception.readLine();
System.out.println(message);
if(message.equalsIgnoreCase("full")){
envoi.println("ok");
System.out.println("ok");
File[] listeFichier;
listeFichier= listerFichier.listeDeFichiersDansDossierEtSousDossier("C:/Documents and Settings/HP_Administrateur/Mes documents/NetBeansProjects/DesktopApplication1/donnees/");
int nbfichiers = listeFichier.length;
System.out.println("Nombre de fichiers qui vont etre envoyés : taille listeFichier ="+listeFichier.length);
envoi.println(nbfichiers+"");
for(int i=0;i<nbfichiers;i++){
message = reception.readLine();
if(message.equalsIgnoreCase("ok")){
// sendfile
System.out.println(listeFichier[i]);
String cheminfile = listeFichier[i].toString();
File myFile = new File (cheminfile);
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = sock.getOutputStream();
System.out.println("Sending...");
os.write(mybytearray,0,mybytearray.length);
os.flush();
}
}
}
}
}
}
/code
Configuration: Yahoo! Slurp Indeterminable