Rechercher : dans
Par :

Probleme Envoi fichiers client/serveur JAVA

Dernière réponse le 23 mar 2009 à 18:52:52 Boris94240, le 23 mar 2009 à 15:56:35 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Probleme Envoi fichiers client/serveur JAVA » dans :
Processus de Windows VoirVous vous demandez certainement quels sont tous ces horribles processus qui tournent quand vous ouvrez le gestionnaire des tâches... Ici, une tentative d'explication : Csrss.exe Csrss signifie Client Server Run-time Subsystem. C'est un sous...
Environnement Client/Serveur VoirPrésentation de l'architecture d'un système client/serveur De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une...
Réseaux - Architecture client/serveur à 3 niveaux VoirPrésentation de l'architecture à 2 niveaux L'architecture à deux niveaux (aussi appelée architecture 2-tier, tier signifiant rangée en anglais) caractérise les systèmes clients/serveurs pour lesquels le client demande une ressource et le serveur la...

1

magicien10024, le 23 mar 2009 à 15:58:32

Bonjour,


compresse ton volume de fichiers , tu auras moins de souci

Répondre à magicien10024

2

Boris94240, le 23 mar 2009 à 16:48:01

Qu'entends tu par la ?

Répondre à Boris94240

3

magicien10024, le 23 mar 2009 à 17:10:31

Quand tu as 1 seule fichier ca ne pose pas de souci


ex si ton dossier fait 100 m° tu le compresse


ton fichier--> clic droit --> envoyer vers --> dossier compressé

Répondre à magicien10024

4

Boris94240, le 23 mar 2009 à 17:39:22

Ha oui ok ... effectivement ca aurait été une solution si j'avais la possibilité de le faire mais je ne peux pas ....
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 ...

Répondre à Boris94240

5

 magicien10024, le 23 mar 2009 à 18:52:52

j'avais la possibilité de le faire mais je ne peux pas


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

Répondre à magicien10024