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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
import java.net.*;
import java.awt.Dimension;
import java.io.*;
import java.util.*;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
public class server extends Thread
{
public server()
{
this.start();
}
public void run()
{
try
{
//envoiSimple();
envoiFichier();
}
catch (Exception e) {e.printStackTrace();}
}
private void envoiSimple() throws UnknownHostException, IOException
{
Date t = new Date();
// Socket socketClient = new Socket("127.0.0.1", 8008);
ServerSocket socketEcoute = new ServerSocket(8008);
Socket socketClient = socketEcoute.accept();
DataInputStream in = new DataInputStream(socketClient.getInputStream());
DataOutputStream out = new DataOutputStream(socketClient.getOutputStream());
// Creation d'un tampon de stockage
byte[] buffer_receive = new byte[4096];
for (int i = 0; i <10*4096; i++)
{
out.write(buffer_receive);
out.flush();
in.read();
}
out.write("END".getBytes());
out.flush();
System.out.println("Transfert " + (new Date().getTime() - t.getTime()));
}
private void envoiFichier() throws UnknownHostException, IOException
{
Date t = new Date();
// Socket socketClient = new Socket("127.0.0.1", 8008);
ServerSocket socketEcoute = new ServerSocket(8008);
Socket socketClient = socketEcoute.accept();
DataInputStream in = new DataInputStream(socketClient.getInputStream());
DataOutputStream out = new DataOutputStream(socketClient.getOutputStream());
// ouverture de flux sur le fichier à envoyer
RandomAccessFile fic = null;
int tailleF = 0;
fic = new RandomAccessFile ("D:\\zelda.txt","r");
/*JFileChooser fic1=new JFileChooser(new File("."));
fic1.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int retrunval=fic1.showDialog(new JFrame(), "selection");
if(retrunval==JFileChooser.APPROVE_OPTION)
{
File Selectchemin=fic1.getSelectedFile();
}*/
tailleF = (int) fic.length();
// quelques initialisations
byte[] buffer_send = new byte[4096]; // buffer de lecture dans le fichier
long fichierfini = -1; // == 0 lorsque le fichier aura été entièrement envoyé
while (fichierfini !=0)
{
//Lecture du fichier d'entrée dans le buffer
long octets_lus = 0; // nombre d'octets lus
octets_lus = fic.length();
out.write(buffer_send);
out.flush();
in.read();
// teste si le fichier source a été entièrement parcourru
fichierfini = (int) (fic).length() - fic.getFilePointer();
}
// Boucle d'envoi terminée : soit envoi fini, soit erreur
out.write("END".getBytes());
out.flush();
// Dans tous les cas, fermeture du fichier en lecture
fic.close();
in.close();
out.close();
float tps = (new Date().getTime() - t.getTime()) / 1000F;
if (tps == 0) tps = 1;
System.out.println(tailleF + " octets copiés en " + (new Date().getTime() - t.getTime()) + "ms");
}
} |
Partager