problemme avec la transfert des fichier avec ocket
salut j'ai fait un petit programme de transfert de fichier , il fonctionne bien mais le fichier reçu n'est pas complète par exemple si j'envoie un fichier contient 2 page , je reçois un fichier ne contient que 3 et des fois 4 ....ligne
c'est ça le code:
client :
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 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
| package src;
import java.net.Socket;
import java.io.FileInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;
public class client{
private static File fileToSend=new File("e:\\java.txt");
private static Socket socket;
private static DataOutputStream dataOut;
private static FileInputStream fis = null;
public static void main(String []args){
try{
socket=new Socket("127.0.0.1",50);
dataOut = new DataOutputStream(socket.getOutputStream());
}
catch(IOException e){
System.out.println("Erreur d IO");
}
boolean fileExists = true;
try{
//Flux de lecture dans le fichier
fis = new FileInputStream(fileToSend);
}
catch(FileNotFoundException e){
fileExists = false;
}
if(fileExists){
//Creation d'un buffer de 2Ko
byte[] buffer = new byte[2048];
int bytes = 0;
try{
//Envoie du nom du fichier dans le flux de sortie
dataOut.writeUTF(fileToSend.getName());
//Copie du fichier dans le flux de sortie
while((bytes = fis.read(buffer))!= -1){
dataOut.write(buffer,0,bytes);
}
fis.close();
}
catch(IOException e){
System.out.println("Erreur d IO");
}
}
}
} |
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 28 29 30 31 32 33 34 35 36 37
| package src;
import java.net.InetAddress;
import java.net.Socket;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
public class Serveur {
private static ServerSocket sv;
private static Socket socket;
private static DataInputStream dataIn;
private static FileOutputStream fos;
private static File file;
public static void main( String[] args){
int i;
while (true){
try{
sv = new ServerSocket(50);
socket = sv.accept();
dataIn = new DataInputStream(socket.getInputStream());
file = new File("e:\\e.txt");
fos = new FileOutputStream(file);
while((i = dataIn.read())!= -1){
fos.write(i);
}
socket.close();
}
catch(IOException e){
System.out.println("Erreur d IO");
}
}
}
} |
merci d’avance.