|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2005
Messaggi: 5
|
[JAVA] client-server: invio dati letti da DB Access
Salve a tutti,
sto creando in Java un'apllicazione client server che utilizza i socket. Ho già creato la connessione tra client e server e la lettura di un database access (utilizzando jdbc-odbc) da parte del server. Ho un problema invece nell'invio al client dei dati letti nel database dal server. Una volta ottenuti i dati dal database, come devo trattare il ResultSet ???? Qualcuno sa darmi una mano? Devo associare un InputStream ai dati letti dal database?? E' la prima volta che mi trovo ad implementare una cosa di qusto tipo: AIUTO! Grazie anticipatamente. Liuk |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Avendo "connesso" client e server, se praticamente già a cavallo.
Per trasferire i dati devi solo stabilire un protocollo di comunicazione. Detto in poche parole, attraverso i socket stabilisci un canale di trasferimento di byte da un punto ad un altro della rete. Ora l'oggetto A comunica a B i risultati attraverso quel canale che trasmette byte. Potrestio fare così: 1. A ricava i dati da access 2. A trasforma i dati in un pacchetto di byte 3. A invia il pacchetto di byte attraverso il socket 4. B riceve il pacchetto di byte 5. B trasforma il pacchetto di byte in dati I punti 1, 3 e 4 li hai già. Ti manca la trasformazione. Il meccanismo di trasformazione deve essere noto sia ad A che a B: cioè entrambi devono conoscere la lingua usata per la comunicazione e le sue regole. Ad esempio, supponiamo di dover trasferire delle stringhe. A e B potrebbero appoggiarsi ad un terzo oggetto capace di trasformare sequenze di stringhe in un pacchetto di byte e un pacchetto di byte in una sequenza di stringhe: Codice:
public class Interpreter {
public ByteBuffer toBytes(String...data) {...}
public Collection<String> toStrings(ByteBuffer data) {...}
}
Ad esempio: Codice:
//pseudo codice
public ByteBuffer toBytes(String...args) {
ArrayList<String> data = new ArrayList<String>();
data.addAll(Arrays.asList(args));
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oStream = new ObjectOutputStream(bout);
oStream.writeObject(data);
oStream.flush();
byte[] bytes = bout.toByteArray();
ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
buffer.wrap(bytes).rewind();
return buffer;
}
Con un meccanismo simile puoi trasferire i dati più diversi, purchè incapsulati in oggetti serializzabili. Non è comunque l'unica opzione. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:36.



















