Socket
Résolu
emma28.
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
emma28. Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
emma28. Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec mon code, je ne comprends vraiment pas pourquoi ça plante.
Je veux transférer des fichiers d'un pc à un autre j'utilise pour cela des sockets.
Lors du premier envoi tout fonctionne bien mais si je veux envoyer une seconde fois au client cela plante et me génére cette exception.
java - StreamCorruptedException: invalid type code: AC
Je vous envoi un bout du code pour voir:
Coté serveur pour l envoi du fichier ( biensur j ai instancié les socket avant pour se connecter:
FileInputStream inf=new FileInputStream(new File(path.getAbsolutePath()));
ObjectOutputStream out=new ObjectOutputStream(sock.getOutputStream());
byte buf[] = new byte[1024];
int n;
while((n=inf.read(buf))!=-1){
out.write(encrypt(buf),0,n);
}
cote client quand il reçoit:
ObjectInputStream in=new ObjectInputStream(sock.getInputStream());
byte buf[] = new byte[1024];
int n=0;
FileOutputStream out =new FileOutputStream(new File(dirFileChooser.getSelectedFile().toString()));
while((n=in.read(buf))!=-1){
out.write(c.decrypt(buf),0,n);
}
Le probleme est avec la dernière ligne
le in.read(buf)
Je ne sais pas faut peut être vidé le flux mais pourtant j'en crée un nouveau à chaque fois.
Merci
J'ai un problème avec mon code, je ne comprends vraiment pas pourquoi ça plante.
Je veux transférer des fichiers d'un pc à un autre j'utilise pour cela des sockets.
Lors du premier envoi tout fonctionne bien mais si je veux envoyer une seconde fois au client cela plante et me génére cette exception.
java - StreamCorruptedException: invalid type code: AC
Je vous envoi un bout du code pour voir:
Coté serveur pour l envoi du fichier ( biensur j ai instancié les socket avant pour se connecter:
FileInputStream inf=new FileInputStream(new File(path.getAbsolutePath()));
ObjectOutputStream out=new ObjectOutputStream(sock.getOutputStream());
byte buf[] = new byte[1024];
int n;
while((n=inf.read(buf))!=-1){
out.write(encrypt(buf),0,n);
}
cote client quand il reçoit:
ObjectInputStream in=new ObjectInputStream(sock.getInputStream());
byte buf[] = new byte[1024];
int n=0;
FileOutputStream out =new FileOutputStream(new File(dirFileChooser.getSelectedFile().toString()));
while((n=in.read(buf))!=-1){
out.write(c.decrypt(buf),0,n);
}
Le probleme est avec la dernière ligne
le in.read(buf)
Je ne sais pas faut peut être vidé le flux mais pourtant j'en crée un nouveau à chaque fois.
Merci
5 réponses
Je pense que le problème est lié au fait que tu utilises
Tu devrais donc remplacer
Remarque : à quoi servent tes méthodes encrypt et decrypt ? Il n'est absolument pas certain que les blocs envoyés seront ceux reçus, ils peuvent être coupés, donc même si mis bout à bout ce qui est envoyé sera ce qui est reçu, si ton cryptage se fait par morceaux il risque d'y avoir un problème lors du décryptage...
La confiance n'exclut pas le contrôle
encrypt(buf)et
decrypt(buf)avec le buffer entier, alors qu'il faut uniquement considérer les 0 à n valeurs de celui-ci.
Tu devrais donc remplacer
out.write(encrypt(buf),0,n)par
out.write(encrypt(buf,0,n)), de même dans l'autre sens.
Remarque : à quoi servent tes méthodes encrypt et decrypt ? Il n'est absolument pas certain que les blocs envoyés seront ceux reçus, ils peuvent être coupés, donc même si mis bout à bout ce qui est envoyé sera ce qui est reçu, si ton cryptage se fait par morceaux il risque d'y avoir un problème lors du décryptage...
La confiance n'exclut pas le contrôle
mais en fait mm quand je n'encrypte pas ça marche pas, c'est le objectinputstream qui a un probleme j pense
voilà ça me lance cette exception
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2487)
at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2522)
at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2681)
at java.io.ObjectInputStream.read(ObjectInputStream.java:862)
at java.io.InputStream.read(InputStream.java:101)
au bout du second encoi et c'est la ligne
while((n=in.read(buf))!=-1) qui pose problème.
J'ai tt essayé j comprend pas
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2487)
at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2522)
at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2681)
at java.io.ObjectInputStream.read(ObjectInputStream.java:862)
at java.io.InputStream.read(InputStream.java:101)
au bout du second encoi et c'est la ligne
while((n=in.read(buf))!=-1) qui pose problème.
J'ai tt essayé j comprend pas
Je viens d'essayer ton code, et il fonctionne bien, la seule chose qui pourrait coincer c'est tes méthode encrypt et decrypt.
Voici deux classes complètes pour tester :
Voici deux classes complètes pour tester :
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { private static byte[] encrypt(byte[] tab) { return tab; } public static void main(String[] args) throws IOException { Socket sock = new ServerSocket(9001).accept(); FileInputStream in = new FileInputStream(new File("C:/test.txt")); ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream()); byte buf[] = new byte[1024]; int n; while((n=in.read(buf))!=-1) out.write(encrypt(buf),0,n); out.close(); in.close(); sock.close(); } }
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.net.InetAddress; import java.net.Socket; public class Client { private static byte[] decrypt(byte[] tab) { return tab; } public static void main(String[] args) throws IOException { Socket sock = new Socket(InetAddress.getLocalHost(),9001); ObjectInputStream in=new ObjectInputStream(sock.getInputStream()); FileOutputStream out = new FileOutputStream(new File("C:/test2.txt")); byte buf[] = new byte[1024]; int n; while((n=in.read(buf))!=-1) out.write(decrypt(buf),0,n); out.close(); in.close(); sock.close(); } }
Mais le problème c'est qu'il fonctionne bien juste pour un seul envoi si tu fais des envoi séquentiel ça va bloquer
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ChatTransferServer extends JFrame implements ActionListener{
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JComboBox liste;
private JTextField connect;
private Container c ;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
public static cryptage c1 ;
public File path;
public String clé_serveur;
ServerSocket servsock;
Socket sock;
/** Creates a new instance of Client */
public ChatTransferServer() {
super("Transfer secure file server");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btFile.addActionListener(listenerbtFile);
btconnect.addActionListener(listenerbtconnect);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connect= new JTextField(10);
connect.setText("server disconnected");
try {
address.setText(InetAddress.getLocalHost().toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connect);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(this.btFile);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public String getcle(){
return clé_serveur;
}
public void setcle(String cle){
this.clé_serveur=cle;
}
ActionListener listenerbtFile = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
String nom=JOptionPane.showInputDialog(null,"Entrez la clé d'encryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
System.out.println("Server>> encryption and sending : clé "+ nom);
if (file_path.getText().compareTo("")==0)
System.out.println("please select a file..");
try
{
//envoi du nom du fichier
ObjectOutputStream sortie = new ObjectOutputStream(sock.getOutputStream());
// vidanger lengthtampon se sorie pour envoyer les information
//d'en-tête.
sortie.flush();
try{
sortie.writeObject(nom_fichier);
}
catch(NullPointerException e)
{
}
cryptage c = new cryptage(nom);
FileInputStream inf=new FileInputStream(new File(path.getAbsolutePath()));
ObjectOutputStream out=new ObjectOutputStream(sock.getOutputStream());
byte buf[] = new byte[1024];
int n;
while((n=inf.read(buf))!=-1){
out.write(buf,0,n);
}
// inf.close();
// out.reset();
// out.reset();
}
catch (NullPointerException e)
{
System.out.println("Serveur not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
servsock = new ServerSocket(13267);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Waiting...");
connect.setText("Waiting...");
try {
sock = servsock.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Accepted connection : " + sock);
connect.setText("server connected");
}};
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("CHOOSE FILE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.showDialog(dirFileChooser, approve); // Pour afficher le JFileChooser...
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
path=dirFileChooser.getSelectedFile();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listeneropen = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println("LOG : Select a file ...");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
System.out.println("name of the file"+ nom_fichier);
//ouverture du fichier
Desktop desk= Desktop.getDesktop();
try {
desk.open(dirFileChooser.getSelectedFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferServer appli = new ChatTransferServer();
}
}
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ChatTransferServer extends JFrame implements ActionListener{
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JComboBox liste;
private JTextField connect;
private Container c ;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
public static cryptage c1 ;
public File path;
public String clé_serveur;
ServerSocket servsock;
Socket sock;
/** Creates a new instance of Client */
public ChatTransferServer() {
super("Transfer secure file server");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btFile.addActionListener(listenerbtFile);
btconnect.addActionListener(listenerbtconnect);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connect= new JTextField(10);
connect.setText("server disconnected");
try {
address.setText(InetAddress.getLocalHost().toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connect);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(this.btFile);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public String getcle(){
return clé_serveur;
}
public void setcle(String cle){
this.clé_serveur=cle;
}
ActionListener listenerbtFile = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
String nom=JOptionPane.showInputDialog(null,"Entrez la clé d'encryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
System.out.println("Server>> encryption and sending : clé "+ nom);
if (file_path.getText().compareTo("")==0)
System.out.println("please select a file..");
try
{
//envoi du nom du fichier
ObjectOutputStream sortie = new ObjectOutputStream(sock.getOutputStream());
// vidanger lengthtampon se sorie pour envoyer les information
//d'en-tête.
sortie.flush();
try{
sortie.writeObject(nom_fichier);
}
catch(NullPointerException e)
{
}
cryptage c = new cryptage(nom);
FileInputStream inf=new FileInputStream(new File(path.getAbsolutePath()));
ObjectOutputStream out=new ObjectOutputStream(sock.getOutputStream());
byte buf[] = new byte[1024];
int n;
while((n=inf.read(buf))!=-1){
out.write(buf,0,n);
}
// inf.close();
// out.reset();
// out.reset();
}
catch (NullPointerException e)
{
System.out.println("Serveur not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
servsock = new ServerSocket(13267);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Waiting...");
connect.setText("Waiting...");
try {
sock = servsock.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Accepted connection : " + sock);
connect.setText("server connected");
}};
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("CHOOSE FILE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.showDialog(dirFileChooser, approve); // Pour afficher le JFileChooser...
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
path=dirFileChooser.getSelectedFile();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listeneropen = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println("LOG : Select a file ...");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
System.out.println("name of the file"+ nom_fichier);
//ouverture du fichier
Desktop desk= Desktop.getDesktop();
try {
desk.open(dirFileChooser.getSelectedFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferServer appli = new ChatTransferServer();
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.filechooser.FileFilter;
public class ChatTransferClient extends JFrame implements ActionListener{
private static String key;
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JButton btreceive = new JButton("Receive");
private JComboBox liste;
private JTextField connec;
private Container c ;
private String path;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
static boolean connect=false;
static Socket sock;
public static String clé_client;
/** Creates a new instance of Client */
public ChatTransferClient() {
super("Transfer secure file client");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btconnect.addActionListener(listenerbtconnect);
btreceive.addActionListener(listenerbtreceive);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connec=new JTextField(10);
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connec);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(btreceive);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
// setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connec.setText("client disconnected");
}
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listenerbtreceive = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try
{
int filesize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current = 0;
// localhost for testing
String nom=JOptionPane.showInputDialog(null,"Entrez la clé de decryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
//recuperation name file
ObjectInputStream entree = new ObjectInputStream(sock.getInputStream());
String message= "";
try
{
message = (String)entree.readObject();
}
catch (IOException e)
{
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("le fichier est "+ message);
file_path.setText("Receiveé file "+message);
// receive file
byte [] mybytearray = new byte [filesize];
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("SAVE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.setSelectedFile(new File (message));
if(dirFileChooser.showDialog(dirFileChooser, approve) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println("Server>> decryption : clé "+ nom);
cryptage c = new cryptage(nom);
ObjectInputStream in=new ObjectInputStream(sock.getInputStream());
byte buf[] = new byte[1024];
int n=0;
FileOutputStream out =new FileOutputStream(new File(dirFileChooser.getSelectedFile().toString()));
// System.out.println(dirFileChooser.getSelectedFile().toString());
//ici pbleme
while((n=in.read(buf))!=-1){
out.write(buf,0,n);
}
// in.reset();
// out.close();
n=0;
}
catch(NullPointerException e)
{
}
}
catch (NullPointerException e)
{
System.out.println("client not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
if (address.getText().compareTo("")!=0)
{ sock = new Socket(address.getText(),13267);
System.out.println("connected to " +address.getText());
}
else
System.out.println("Pease enter your ip adresse");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connecting...");
connec.setText("client connecting");
}
};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferClient appli = new ChatTransferClient();
}
}
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.filechooser.FileFilter;
public class ChatTransferClient extends JFrame implements ActionListener{
private static String key;
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JButton btreceive = new JButton("Receive");
private JComboBox liste;
private JTextField connec;
private Container c ;
private String path;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
static boolean connect=false;
static Socket sock;
public static String clé_client;
/** Creates a new instance of Client */
public ChatTransferClient() {
super("Transfer secure file client");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btconnect.addActionListener(listenerbtconnect);
btreceive.addActionListener(listenerbtreceive);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connec=new JTextField(10);
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connec);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(btreceive);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
// setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connec.setText("client disconnected");
}
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listenerbtreceive = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try
{
int filesize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current = 0;
// localhost for testing
String nom=JOptionPane.showInputDialog(null,"Entrez la clé de decryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
//recuperation name file
ObjectInputStream entree = new ObjectInputStream(sock.getInputStream());
String message= "";
try
{
message = (String)entree.readObject();
}
catch (IOException e)
{
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("le fichier est "+ message);
file_path.setText("Receiveé file "+message);
// receive file
byte [] mybytearray = new byte [filesize];
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("SAVE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.setSelectedFile(new File (message));
if(dirFileChooser.showDialog(dirFileChooser, approve) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println("Server>> decryption : clé "+ nom);
cryptage c = new cryptage(nom);
ObjectInputStream in=new ObjectInputStream(sock.getInputStream());
byte buf[] = new byte[1024];
int n=0;
FileOutputStream out =new FileOutputStream(new File(dirFileChooser.getSelectedFile().toString()));
// System.out.println(dirFileChooser.getSelectedFile().toString());
//ici pbleme
while((n=in.read(buf))!=-1){
out.write(buf,0,n);
}
// in.reset();
// out.close();
n=0;
}
catch(NullPointerException e)
{
}
}
catch (NullPointerException e)
{
System.out.println("client not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
if (address.getText().compareTo("")!=0)
{ sock = new Socket(address.getText(),13267);
System.out.println("connected to " +address.getText());
}
else
System.out.println("Pease enter your ip adresse");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connecting...");
connec.setText("client connecting");
}
};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferClient appli = new ChatTransferClient();
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok mais c'est long t prévenu
j vais t envoyer le serveur là
j vais t envoyer le serveur là
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ChatTransferServer extends JFrame implements ActionListener{
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JComboBox liste;
private JTextField connect;
private Container c ;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
public static cryptage c1 ;
public File path;
public String clé_serveur;
ServerSocket servsock;
Socket sock;
/** Creates a new instance of Client */
public ChatTransferServer() {
super("Transfer secure file server");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btFile.addActionListener(listenerbtFile);
btconnect.addActionListener(listenerbtconnect);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connect= new JTextField(10);
connect.setText("server disconnected");
try {
address.setText(InetAddress.getLocalHost().toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connect);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(this.btFile);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public String getcle(){
return clé_serveur;
}
public void setcle(String cle){
this.clé_serveur=cle;
}
ActionListener listenerbtFile = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
String nom=JOptionPane.showInputDialog(null,"Entrez la clé d'encryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
System.out.println("Server>> encryption and sending : clé "+ nom);
if (file_path.getText().compareTo("")==0)
System.out.println("please select a file..");
try
{
//envoi du nom du fichier
ObjectOutputStream sortie = new ObjectOutputStream(sock.getOutputStream());
// vidanger lengthtampon se sorie pour envoyer les information
//d'en-tête.
sortie.flush();
try{
sortie.writeObject(nom_fichier);
}
catch(NullPointerException e)
{
}
cryptage c = new cryptage(nom);
FileInputStream inf=new FileInputStream(new File(path.getAbsolutePath()));
ObjectOutputStream out=new ObjectOutputStream(sock.getOutputStream());
byte buf[] = new byte[1024];
int n;
while((n=inf.read(buf))!=-1){
out.write(buf,0,n);
}
// inf.close();
// out.reset();
// out.reset();
}
catch (NullPointerException e)
{
System.out.println("Serveur not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
servsock = new ServerSocket(13267);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Waiting...");
connect.setText("Waiting...");
try {
sock = servsock.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Accepted connection : " + sock);
connect.setText("server connected");
}};
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("CHOOSE FILE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.showDialog(dirFileChooser, approve); // Pour afficher le JFileChooser...
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
path=dirFileChooser.getSelectedFile();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listeneropen = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println("LOG : Select a file ...");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
System.out.println("name of the file"+ nom_fichier);
//ouverture du fichier
Desktop desk= Desktop.getDesktop();
try {
desk.open(dirFileChooser.getSelectedFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferServer appli = new ChatTransferServer();
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.filechooser.FileFilter;
public class ChatTransferClient extends JFrame implements ActionListener{
private static String key;
public static String nom_fichier; //pour le chemin du fichier
private JTextField file_path;
private JPanel pan= new JPanel(new GridLayout(2,1));
private JPanel pan_connexion= new JPanel(new GridLayout(3,2));
private JTextField address;
private JLabel name_address;
private JMenuBar fileMenuBar;
private JMenu fileMenu;
private JMenuItem filechoose;
private JMenuItem fileQuit;
private JButton btconnect = new JButton("connexion");
private JButton btFile = new JButton("encrypt file and send");
private JButton btreceive = new JButton("Receive");
private JComboBox liste;
private JTextField connec;
private Container c ;
private String path;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
static boolean connect=false;
static Socket sock;
public static String clé_client;
/** Creates a new instance of Client */
public ChatTransferClient() {
super("Transfer secure file client");
//installation des composants graphique
//pour le menu
fileMenuBar = new JMenuBar();
fileMenu = new JMenu("Edit");
filechoose= new JMenuItem("Choose file");
fileQuit = new JMenuItem("Sign out");
fileMenuBar.add(fileMenu);
fileMenu.add(filechoose);
fileMenu.add(fileQuit);
//ajout des listeners
fileQuit.addActionListener(listenerquit);
filechoose.addActionListener(listenerchoose);
btconnect.addActionListener(listenerbtconnect);
btreceive.addActionListener(listenerbtreceive);
// sur le conteneur......
c = getContentPane();
Object[] elements = new Object[]{"Encryption Ceasare", "Advanced Encryption Ceasare (with thumbnail)"};
liste = new JComboBox(elements);
name_address= new JLabel("Peer Address");
address=new JTextField(10);
connec=new JTextField(10);
file_path= new JTextField(15);
file_path.setFocusable(false);
pan_connexion.add(name_address);
pan_connexion.add(address);
pan_connexion.add(new JLabel(""));
pan_connexion.add(connec);
pan_connexion.add(new JLabel(""));
pan_connexion.add(btconnect);
pan.add(file_path);
// pan.add(this.liste);
pan.add(btreceive);
c.add(pan,BorderLayout.SOUTH);
c.add(pan_connexion,BorderLayout.NORTH);
setSize(450,200);
// setJMenuBar(fileMenuBar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connec.setText("client disconnected");
}
ActionListener listenerquit = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Exit");
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}};
ActionListener listenerchoose = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
System.out.println(">>Choose a file");
System.out.println("LOG : Select a file ...");
file_path.setText("");
JFileChooser dirFileChooser = new JFileChooser();
if(dirFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println( dirFileChooser.getSelectedFile().getPath());
nom_fichier= dirFileChooser.getSelectedFile().getName();
}
catch(NullPointerException e)
{
}
System.out.println("name of the file "+ nom_fichier);
file_path.setText("selected file: "+ nom_fichier);
try {
FileInputStream fis = new FileInputStream(dirFileChooser.getSelectedFile());
byte[] buffer = new byte[1024]; //Récupération du contenu du fichier dans une variable de type byte
// fis.read(buffer); //Lecture du contenu de la variable buffer
try {
for (int readNum; (readNum = fis.read(buffer)) != -1;) {
bos.write(buffer, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
} catch (IOException ex) {
}
}};
ActionListener listenerbtreceive = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try
{
int filesize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current = 0;
// localhost for testing
String nom=JOptionPane.showInputDialog(null,"Entrez la clé de decryptage correspondante :","Saisie de la clé",JOptionPane.QUESTION_MESSAGE);
//recuperation name file
ObjectInputStream entree = new ObjectInputStream(sock.getInputStream());
String message= "";
try
{
message = (String)entree.readObject();
}
catch (IOException e)
{
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("le fichier est "+ message);
file_path.setText("Receiveé file "+message);
// receive file
byte [] mybytearray = new byte [filesize];
JFileChooser dirFileChooser = new JFileChooser();
String approve = new String("SAVE");
// Le bouton pour valider l'enregistrement portera la
dirFileChooser.setSelectedFile(new File (message));
if(dirFileChooser.showDialog(dirFileChooser, approve) == JFileChooser.APPROVE_OPTION)
dirFileChooser.getSelectedFile();
try{
System.out.println("Server>> decryption : clé "+ nom);
cryptage c = new cryptage(nom);
ObjectInputStream in=new ObjectInputStream(sock.getInputStream());
byte buf[] = new byte[1024];
int n=0;
FileOutputStream out =new FileOutputStream(new File(dirFileChooser.getSelectedFile().toString()));
// System.out.println(dirFileChooser.getSelectedFile().toString());
//ici pbleme
while((n=in.read(buf))!=-1){
out.write(buf,0,n);
}
// in.reset();
// out.close();
n=0;
}
catch(NullPointerException e)
{
}
}
catch (NullPointerException e)
{
System.out.println("client not connected");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ActionListener listenerbtconnect = new ActionListener(){
@Override
public void actionPerformed(ActionEvent act) {
// TODO Auto-generated method stub
try {
if (address.getText().compareTo("")!=0)
{ sock = new Socket(address.getText(),13267);
System.out.println("connected to " +address.getText());
}
else
System.out.println("Pease enter your ip adresse");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connecting...");
connec.setText("client connecting");
}
};
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
ChatTransferClient appli = new ChatTransferClient();
}
}