Hm, je pense voir d'ou vient le probleme.
Sur ton serveur, tu crées le fichier avant de verifier la connexion, il ne contient donc rien.
Ensuite tu attends la connexion est là 2 possibilites :
- Il y a un probleme lors de l'etablissement de la connexion et une exception est lancée.
- Il y a un probleme lors de l'envoie des données au niveau de ton serveur.
Donc, tout est normal, tu crées ton fichier trop top, et surtout, tu catches tres mal tes exceptions !! Je suis presque sur que tu loupes le vrai probleme.
Je te propose de changer ta facon de catcher, mes ca au lieu de "rien" :
Code :
- System.out.println(e);
|
et de créer ton fichier plus tard sur le serveur:
Code :
- try{
- Socket t = new Socket(host,6667); //nouvelle socket pour le transfert du fichier
- RandomAccessFile outFile = new RandomAccessFile(System.getProperty("user.home" )+"\\"+s,"r" ); // création du fichier en lecture
- OutputStream out2 = t.getOutputStream();
- byte bb[] = new byte[1024];
- int amount;
- while((amount = outFile.read(bb)) != -1){
- out2.write(bb, 0,amount);
- }
- out2.flush();
- out2.close();
- server.ps.println("226 transfer complete" );
- outFile.close();
- t.close();
- }catch(IOException e){}
|
Personnelement, j'ai testé cela chez moi et ca marchait tres bien:
Receiver :
Code :
- import java.util.*;
- import java.net.*;
- import java.io.*;
- public class Receiver{
- public static void main(String[] argv){
- try{
- ServerSocket titi = new ServerSocket(6667); //on creer une nouvelle socket pour le transfert du fichier
- Socket t=titi.accept();
- RandomAccessFile inFile = new RandomAccessFile ("new03.jpg","rw" ); //on creer le fichier sur le disque dur
- InputStream in2 = t.getInputStream();
- byte bb[] = new byte[1024];
- int amount;
- while((amount = in2.read(bb)) != -1){
- inFile.write(bb,0,amount);
- }
- in2.close();
- inFile.close();
- t.close();
- }
- catch(IOException e){System.out.println(e);}
-
- }
- }
|
Sender :
Code :
- import java.util.*;
- import java.net.*;
- import java.io.*;
- public class Sender{
- public static void main(String[] argv){
- try{
- RandomAccessFile outFile = new RandomAccessFile("04.jpg","r" ); // création du fichier en lecture
- Socket t = new Socket(argv[0],6667); //nouvelle socket pour le transfert du fichier
- OutputStream out2 = t.getOutputStream();
- byte bb[] = new byte[1024];
- int amount;
- while((amount = outFile.read(bb)) != -1){
- out2.write(bb, 0,amount);
- }
- out2.flush();
- out2.close();
- outFile.close();
- t.close();
- }catch(IOException e){System.out.println(e);}
-
-
- }
-
- }
|
Voila, bon courage et tiens nous au courant !
Message édité par bartleby le 01-11-2002 à 13:20:40