Bonjour, enieme topic que je fait mais bon c'est un sujet different, et malgre mes recherche rien ne s'en approche :

La question est simple :

comment peut on annuler une reception d'un fichier du 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);
J'ai essaye via un in.reset, mais sans succes, des exception du style "mark not supported" ou "incorrect mark" sont levee (j'ai pas bien compris le system des mark mais ca ressemble un peu a une "sauvegarde").

Pour l'envoi j'ai reussi a faire un reset sur le out, et ca fonctionne (c'est peut etre un peu crade mais ca marche).

Voila donc si vous avez des idees...