Salut,

Voilà je m'adresse à vous car je galère pas mal sur un pb de folie !

J'envoi le contenu d'un fichier avec ma méthode "sendFile" du client au serveur et ça arraive jusqu'à la fin du fichier super bien.
Par contre, le serveur arrive à écrire le fichier via la méthode "stock" mais ne sort jamais de la boucle while, ne trouvant jamais une valeur égale à -1.

Avez vous une idée ? ça fait 2 jours que je suis dessus je n'ai plus d'idée!

Merci d'avance pour vos réponses !

Go

Voici le code des méthodes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
	public void sendFile( Socket clientSocket )
	{
		System.out.println("ENVOI DU FICHIER AU SERVEUR :");
		DataOutputStream dataOut = null;
		FileInputStream fis = null;
 
		try
		{
	        //Création d"un buffer de 4K
	        byte[] buffer= new byte[4096];
	        int bytes = 0;
 
		dataOut = new DataOutputStream(clientSocket.getOutputStream());
			fis = new FileInputStream(System.getProperty("user.dir") + "/" + fileName());
 
	        System.out.println("DEBUT ENVOI DU FICHIER");
	        while((bytes = fis.read(buffer,0,buffer.length)) != -1)
	        {
	        	dataOut.write(buffer, 0, bytes);
 
	        	for( int i = 0; i < buffer.length; i++)
	        		System.out.println(buffer[i]);
	        }
 
	        System.out.println("FIN ENVOI DU FICHIER");
 
	        fis.close();
		}
		catch(IOException ioe)
	    {
	        System.out.println("Erreur d'IO : "+ioe);
	    }
		finally
		{
			try
			{
				fis.close();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
 
 
 
	public void stock( Socket clientSocket )
	{
		DataInputStream dataIn = null;
		FileOutputStream fos = null;
		File fichier = null;
 
		try
		{
		   int i;
		   dataIn = new DataInputStream(clientSocket.getInputStream());
		   fichier = new File(System.getProperty("user.dir") + "/" + fileName());
 
		   fos = new FileOutputStream(fichier); // Ecriture dans le fichier
 
		   System.out.println("DEBUT ECRITURE DU FICHIER");
		   while((i = dataIn.read()) != -1)
		   {
		       fos.write(i);
		       System.out.println(i);
		   }
		   System.out.println("FIN ECRITURE DU FICHIER");
 
		}
		catch (IOException e1)
		{
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		finally
		{
			try
			{
				fos.close();
			}
			catch (IOException e2)
			{
				e2.printStackTrace();
			}
		}
 
	}