[Socket]probleme de debit avec des socketssl
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:
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:
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.