Ajouter un commentaire

rhifay
pr de déserialisation des objet envoyer par socket

salut,
j'ai un pb avec une comunication par socket entre deux machines l'une comme client et l'autre serveur qui envoie des fichiers aux client ,mais au niveux client quand je recois l'objet et essayé de déserialisé avec la classe Bean qui situé au machine serveur pour sérialisé et au niveaux machine client pour déserialisé elle m'affiche le problème suivant au niveau client:

java.lang.ClassNotFoundException:packageMachineServer.Bean
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at java.io.ObjectInputStream.resolveClass(Unknown Source)
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
    at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at packageMachineclient.Client.<init>(Clientstream.java:16)
    at packageMachineclient.Client.main(Clientstream.java:37)

la ligne 16 est:
Bean fileIO=(Bean)ois.readobject();

et voila mon code de seveur:

package packageMachineServer;
import java.io.*;
import java.net.*;
public class Server{
public Server() {
     File[] filenvoye = new File[1];
     filenvoye[0] = new File("/home/workspace/testEfile");
    //sérialiser       
      Bean files = new Bean(filenvoye);
      OutputStream os;
      ServerSocket socket;
      try {
           ObjectOutputStream oos;
           System.out.println("En ecoute .......");
           socket = new ServerSocket(1024);
           Socket SsAccept;
           while(true){
           SsAccept = socket.accept();
           //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            os = SsAccept.getOutputStream();
               oos = new ObjectOutputStream(os);
               //envoyer les donne
               oos.writeObject(files);
               System.out.println("les donne sont envoyer;;;;;;;;");
               }
            //os.close();
               //oos.close();
               //SsAccept.close();
               } catch (UnknownHostException e) {
               e.printStackTrace();
               } catch(IOException exp){
                    exp.printStackTrace();
           }
           //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          }
   
    public static void main(String[] args) {
        new Server();
    }
}

et ma classe au niveux client est:

[code]package packageMachineclient;
import java.io.*;
import java.net.*;
public class Client {
    public Client() {
     Socket socket;
     try {
     socket = new Socket("192.186.0.133",1024);
     //On ouvre notre flux d'entrée
     InputStream is = socket.getInputStream();
     ObjectInputStream ois = new ObjectInputStream(is);
     //On cast l'objet pour en retirer les informations
     Bean fileIO = (Bean)ois.readObject();
     String texte = new String(" ");
     for (int i=0;i<fileIO.lenght();i++){
     fileIO.redfile(i);
     //Affiche la liste des fichiers qui ont été envoyés
     System.out.println("Le fichier est :"+fileIO.getFile(i).getPath());
     texte+=fileIO.getFile(i).getPath();
     texte+='\n';
     }
     ois.close();
     is.close();
     socket.close();
     } catch (IOException e) {
      e.printStackTrace();
     }
     catch (ClassNotFoundException e) {
     System.out.println("voila mon problem"+e.getCause());
     e.printStackTrace();
     }
     }
     public static void main (String []arg){
        new Client();
     }
     }

[/code]
et enfin pour la classe Bean de sérialisation:

import java.io.*;
import java.net.*;
public class Bean implements Serializable{
 private static final long serialVersionUID = 1L;
 private File[] file;
 private int lenght;
 public Bean(File[] file) {
      super();
       this.file = file;
       this.lenght=file.length;
    }
   public int lenght() {
        return lenght;
    }
  
    public File getFile(int i) {
        return file[i];
    }
}

Merci

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 BBBB   H  H   QQQ    U   U  Y   Y 
B B H H Q Q U U Y Y
BBBB HHHH Q Q U U Y
B B H H Q QQ U U Y
BBBB H H QQQQ UUU Y
Q