Socket
Résolu/Fermé
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
-
28 nov. 2013 à 19:14
emma28. Messages postés 18 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 12 février 2014 - 29 nov. 2013 à 03:49
emma28. Messages postés 18 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 12 février 2014 - 29 nov. 2013 à 03:49
5 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 28/11/2013 à 19:29
Modifié par KX le 28/11/2013 à 19:29
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
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 19:28
28 nov. 2013 à 19:28
mais en fait mm quand je n'encrypte pas ça marche pas, c'est le objectinputstream qui a un probleme j pense
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 nov. 2013 à 19:34
28 nov. 2013 à 19:34
Ah effectivement, je n'avais pas vu ce point. Il vaudrait mieux que tu utilises les méthodes de haut niveau de ObjectOutputStream, c'est à dire writeObject, writeInteger, writeUTF, etc.
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 19:34
28 nov. 2013 à 19:34
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 28/11/2013 à 19:57
Modifié par KX le 28/11/2013 à 19:57
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(); } }
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:03
28 nov. 2013 à 20:03
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 nov. 2013 à 20:09
28 nov. 2013 à 20:09
Je n'avais pas compris que tu faisais plusieurs envois, le mieux serait que tu montres ton code complet pour te corriger.
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:14
28 nov. 2013 à 20:14
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();
}
}
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:14
28 nov. 2013 à 20:14
et la le client
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:14
28 nov. 2013 à 20:14
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();
}
}
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:15
28 nov. 2013 à 20:15
ll faut que tu te connecte en premier lieu ensuite tu choisis un ficher et tu envoi ( j'ai un pbleme pr la reception automatique du fichier par le client c 'st pr ça que pr le moment j ai e bouton recevoir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:13
28 nov. 2013 à 20:13
ok mais c'est long t prévenu
j vais t envoyer le serveur là
j vais t envoyer le serveur là
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 nov. 2013 à 20:14
28 nov. 2013 à 20:14
Utilises les balises de code (elles sont à côté des boutons gras italique et souligné)
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:20
28 nov. 2013 à 20:20
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();
}
}
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:21
28 nov. 2013 à 20:21
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();
}
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 nov. 2013 à 20:34
28 nov. 2013 à 20:34
Tu n'aurais pas la classe cryptage tant qu'on y est ?
emma28.
Messages postés
18
Date d'inscription
jeudi 28 novembre 2013
Statut
Membre
Dernière intervention
12 février 2014
28 nov. 2013 à 20:36
28 nov. 2013 à 20:36
lol ok attends