Probleme Envoi fichiers client/serveur JAVA
Boris94240
-
magicien10024 Messages postés 3317 Statut Membre -
magicien10024 Messages postés 3317 Statut Membre -
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
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
A voir également:
- Probleme Envoi fichiers client/serveur JAVA
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Changer serveur dns - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
ex si ton dossier fait 100 m° tu le compresse
ton fichier--> clic droit --> envoyer vers --> dossier compressé
Je dois sauvegarder tout le contenu d'un dossier ( c'est a dire fichers et sous dossiers qui sont dedans )
C'est pourquoi je liste tous les fichiers d'un repretoire avec la fonction suivante.
listeFichier= listerFichier.listeDeFichiersDansDossierEtSousDossier("C:/Documents and Settings/HP_Administrateur/Mes documents/NetBeansProjects/DesktopApplication1/donnees/");
je met le resultat dans un tableau de fichier
je regarde la taille qu'il fait et j'envoie au serveur le nombre d'envois qu'il va y avoir pour la boucle for
tout se passe nikel sauf que le serveur au moment de la reception ne reçoit rien bien que le client ai tout envoyé.
je suis vraiment a cours d'idee ...
quand ton dossier ( ou sous dossier ca veut rien dire ) est compresser --> l'envoyer
le destinataire le décompresse et retrouve tout les fichiers qui s 'y trouve .
je suis vraiment à cours d'idee
prend le peine de faire 1 test si tu 'as pas d'idée