PDA

Visualizza la versione completa : [JAVA] Socket e serializzazione


paolabuba
07-03-2006, 16:41
Ciao a tutti, ho iniziato da poco a studiare i socket.
Fino ad ora sono riuscita a far leggere al socket una stringa letta come object...
ma se io dovessi inviare un qualcosa che serializzabile... possibile farlo leggere sfruttando questa caratteristica.....se s,un aiutino?
grazie tante!

bobc
07-03-2006, 16:46
Cosa intendi dire? Inviare al server dei dati che poi verranno memorizzati sempre nel server??

paolabuba
07-03-2006, 16:50
ciao bobc......6 sempre il mio salvatore...si praticamente voglio inviare dei dati, anche se vorrei fare il contrario:
il client accede al server, il quale invia dei dati che poi rimangono memorizzati nel client....(spero si possa fare questa inversione tra client e server...cmq s la sostanza ci che hai detto te... ho letto di utilizzare serializable...ma.....non saprei come cominciare...) :smack:

bobc
07-03-2006, 16:53
Comunque se questo che tu vuoi fare, basta implementare le classi che estendono serializable sul server e memorizzare i dati provenienti dal client sempre li (sul server).

paolabuba
07-03-2006, 16:54
mmm....ma asp....i dati che trasmetto....da server a client.....poi devono essere memorizzati sul client,non sul server....

bobc
07-03-2006, 16:59
non saprei come cominciare

ok, questa la classe che implementa serializable (da implementare sul server).

Per ora faccio esempi in pseudocodice


import java.io.*;

public class Dati implements Serializable{
private String s;

public Dati(String t){
s=t;
}

public void salva()throws IOException{
//salva la stringa di input su un file
}

public void carica()throws IOException,ClassNotFoundException{
//preleva la stringa dal file salvato
}




poi dal metodo di prima;


import java.io.*;
import java.net.*;
public class EchoServer {
public EchoServer(){
try {
ServerFrame sf=new ServerFrame();
ServerSocket s = new ServerSocket(8189);
Socket incoming = s.accept();
ObjectInputStream ois=new ObjectInputStream(incoming.getInputStream());
String in=(String)ois.readObject();
Dati d=new Dati(in);
try{
d.salva();
}
catch(IOException e){}
System.out.println(in);
} catch (Exception e) { System.err.println(e); }
}
public static void main(String[]args){
new EchoServer();
}
}


Se hai problemi con i metodi salva e carica fammi sapere ....

bobc
07-03-2006, 17:01
mmm....ma asp....i dati che trasmetto....da server a client.....poi devono essere memorizzati sul client,non sul server....

:confused:

Io intendevo da client a server...

bobc
07-03-2006, 17:04
il client accede al server, il quale invia dei dati che poi rimangono memorizzati nel client....(spero si possa fare questa inversione tra client e server...cmq s la sostanza ci che hai detto te... ho letto di utilizzare

Sono un p confuso. Vorresti crearti una lista e aggiungere ogni dato che invi al server??

Draken
07-03-2006, 17:07
ciao
in sostanza quella ke tu vuoi creare un'applicazione Peer To Peer di base,
nel senso ke hai due moduli ke fanno entrambi sia da client ke da server istaurando cos una comunicazione di tipo full duplex
Quindi scambiano dati tra loro in tuttte e due le direzioni

Cmq quello ke tu kiedi fattibile......

Devi creare una classe ke estende la classe serializable

quindi
class Box implements Serializable{
...
}

Ti consiglio di mettere questa classe dentro a un package da te creato.....questo package dovr essere presente sia sul modulo client ke su quello server....altrimenti nn funziona.....

In questo modo, tutti e due i moduli potranno inviare dati serializzati come un unico oggetto..Questo ultimo pu essere letto e compreso da entrambi i moduli della tua applicazione. spero di essere stato kiarro

Eventualmente kiedi pure byez

paolabuba
07-03-2006, 17:10
asp ke ti spiego quale sarebbe lo scopo finale di ci ke devo fare (grazie x la pazienza):
ho un server in ascolto che ha memorizzata dentro di s dell'informazione "A"; quando il client lo contatta, tale server gli invia questa informazione "A" che il client si memorizza.Fine della connessione.
Che ne dici..........?

Loading