Bonjour,

J'ai une application C/S qui permet d'envoyer des fichier via un socketssl.

Tout marche nikel ... sauf que le debit est tres tres pourris.En transferant un fichier de 800ko, j'ai une vitesse de 1ko/s em local !!

Voila le bout de code qui envoi le fichier cote client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
// envoi la taille du fichier au serveur
			String size = "#" + fic.length() + "#" + fic.getName() + "#\n";
			out.write(size.getBytes());
			int limite = new Long(fic.length()).intValue();
			// envoi le fichier via le tableau de byte
			for (int i = 0; i < limite; i++) {
				byte[] temp = new byte[1];
				temp[0] = ficBinaire[i];
				out.write(temp);
				out.flush();
				// System.out.println(i);
			}
			fluxFic.close();
Voici le bout de code cote serveur :

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
String temp = inString.readLine();
			if(temp == null){return true;}
			StringTokenizer strTk = new StringTokenizer(temp, "#");
			long Size = Integer.parseInt(strTk.nextToken());
			String OldName = strTk.nextToken();
			int indexExt = OldName.lastIndexOf('.');
			String FicName = OldName.substring(0, indexExt) + "_copy"
					+ OldName.substring(indexExt);
 
			FileOutputStream fic = new FileOutputStream(FicName);
			long k = 0;
			byte[] tmp = new byte[1];
			in.read(tmp);
			long Start = System.currentTimeMillis();
			while (k < Size - 1) {
				fic.write(tmp);
				in.read(tmp);
				k++;
			}
			fic.close();
 
			// statistiques
			long End = System.currentTimeMillis();
			long nbOctet = k / 8;
			long vitesse = nbOctet / ((End - Start) / 1000 + 1);
			System.out.println("FIN RECEPTION : " + nbOctet + " octets copie,"
					+ vitesse + " oct/sec n " + FicName);
Tout n'est pas parfait (notement le passage des info sur le fichier qui interdit un # dans le nom du fichier ^^), mais ca marche , le probleme viens du debit.