Newsgroup: it.comp.java
Titolo: problemi conversione java>j#

ho realizzato un client e un server in java per la gestione remota del
pc di casa, ora volevo convertire il client in j# per poterlo poi
compilare in un .exe da portarmi con facilità. ho però un problema con
il trasferimento di un treeset, l'eccezione che mi proviene dal client
è la seguente e il codice è sotto. qualcuno ha idea di come si possa
risolvere?
java.io.InvalidClassException: the class does not match the class of
the
persisted object for cl = java.util.TreeSet : __SUID =
-2479143000061671589,
getSUID(cl) = -7772518406400230599
   at java.io.ObjectStreamClass.setClass(Class cl)
   at java.io.ObjectInputStream.readObject()
   at java.io.ObjectInputStream.getObjectStreamClass(Boolean[] is_ref)
   at java.io.ObjectInputStream.readObject()
   at FTPClient.Form1.request(String req) in C:\Documents and
Settings\giuseppe\Documenti\Visual Studio
Projects\FTPClient\Form1.jsl:line
232
*** CLIENT J# MS
private void Form1_Load (Object sender, System.EventArgs e)
 {
  Properties conf = new Properties();
  try
  {
   conf.load(new FileInputStream("config.ini"));
   ipServer = conf.getProperty("ip");
   port = Integer.parseInt(conf.getProperty("porta"));
   System.out.println(ipServer + " " + port);
  }
  catch(Exception ex)
  {
   System.exit(-1);
  }
  TreeSet ts = (TreeSet) request("dr");
  System.out.println(ts);
 }
private Object request(String req)
 {
  Object ob = null;
  try
  {
   Socket sock = new Socket(ipServer, port);
   PrintStream ps = new PrintStream(sock.getOutputStream());
   ObjectInputStream ois = new
ObjectInputStream(sock.getInputStream());
   ps.println(req);
   ob = ois.readObject(); // linea 232
   ps.close();
   ois.close();
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
  return ob;
 }
*** SERVER JAVA SUN
 private void gestisci(Socket sock)
 {
  try
  {
   String info = "\nconnessione il: " + new Date().toString() + "\nda:
" +
sock.getInetAddress();
   System.out.println(info);
   ps.println(info);
   BufferedReader br = new BufferedReader(new
InputStreamReader(sock.getInputStream()));
   ObjectOutputStream oos = new
ObjectOutputStream(sock.getOutputStream());
   String cmd;
   while((cmd = br.readLine()) != null)
   {
    System.out.println("richiesta: " + cmd);
    ps.println("richiesta: " + cmd);
    if(cmd.equals("dr")) // drive
    {
     oos.writeObject(getDrive());
     return;
    }
    if(cmd.startsWith("di")) // directory
    {
     oos.writeObject(getElement(cmd.substring(2), 0));
     return;
    }
    if(cmd.startsWith("fi")) // file
    {
     oos.writeObject(getElement(cmd.substring(2), 1));
     return;
    }
    if(cmd.startsWith("te")) // test
    {
     oos.writeObject("ok");
     return;
    }
    if(cmd.startsWith("st")) // stop
    {
     active = false;
     oos.writeObject(null);
     return;
    }
    if(cmd.startsWith("sc")) // schermo
    {
     oos.writeObject(new javax.swing.ImageIcon(new
Robot().createScreenCapture(new
Rectangle(Toolkit.getDefaultToolkit().getScreenSize()))));
     return;
    }
    if(cmd.startsWith("do")) // download
    {
     DataInputStream dis = new DataInputStream(new
FileInputStream(cmd.substring(2)));
     byte b[] = new byte[1000];
     int len;
     while((len = dis.read(b)) != -1)
     {
      oos.write(b, 0, len);
      oos.flush();
     }
     dis.close();
    }
   }
   br.close();
   oos.close();
   sock.close();
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
   ex.printStackTrace(ps);
  }
 }
private TreeSet getDrive()
 {
  TreeSet drive = new TreeSet();
  for(char c = 'a'; c <= 'z'; c++)
  {
   try
   {
    if(new File(String.valueOf(c) + ":").exists())
     drive.add(String.valueOf(c) + ":");
   }
   catch(Exception ex)
   {}
  }
  return drive;
 }

 ha scritto nel messaggio
news:57f74706.05042...@posting.google.com...


...


 NOOOOOOO!!!!!! j# noooooooooooooo!!!!!!!!!
NOOOOOOO!!!! il quotiong NOOOOOOOOO
-- 
Danilo Bottone
danilo...@gmail.com
www.danilobottone.com
 (.it) 


anche il quoting non e' difficile


 getSUID(cl) = -7772518406400230599
Very very simple... stai cercando di serializzare/deserializzare un TreeSet
tra due ambienti incompatibili tra loro. A questo punto ti conviene gestirti
"a manina" il protocollo di trasmissione (vale a dire progettarlo da zero in
ogni particolare), o lasciar perdere J#...
Ah, a proposito... se vuoi gestire remotamente il server di casa, perchè non
scrivi qualche servlet o pagina JSP su un'istanza di Tomcat così da poter
accedere via web? (occhio all'autenticazione!!!!). Come dici? non vuoi fare
i salti mortali ogni volta che il tuo pc cambia indirizzo ip? Detto, fatto!
http://www.dyndns.org
e per l'aggiornamento automatico
http://www.access.si/DNSer/DNSer.htm
-- 
Fermiamo Scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
  ---  
http://www.xenu.net
(per rispondere personalmente leva IlDitoDalCulo)

 
cesare vai a fare il c......e altrove :)
cmq grazie a tutti, ho risolto portando il server in j#