Newsgroup: it.comp.java
Titolo: Progetto università le dritte giuste

Buongiorno, prima di impazzire altre ore per niente vorrei sapere da
voi se è possibile, anzi se non è troppo complesso fare un programma
di questo tipo.
L'architettura è client server, il server dovrebbe essere un cinema,
quando avviamo il server, viene presentata una maschera con i posti
della sala, e viene quindi creato un array con tutti i posti (questo
son riuscito a farlo), poi si mette in ascolto.
Quando il client A si collega, dovrebbe ricevere la lista di tutti i
posti disponibili (dato che è il primo a collegarsi) prenotare andando
quindi modificare l'array originale, per poi rispendirlo al server e
fare in modo che al client B che si collega dopo gli venga presentato
tutto l'array meno i posti prenotati da client A e via di seguito.
Visto che stò impazzendo, tutto questo si riesce a fare bene? mi
riuscite a dare due dritte, insomma, gli ingredienti giusti?
Per ora ho fatto l'array, l'ho inviato al client, ma quando il client
lo và a esaminare viene fuori una riga con qualche carattere
totalmente distante dall'array creato, una cosa tipo []@4542 bah... 
Grazie per i consigli
--
Stucco
http://stucco.altervista.org

"Stucco" <stu...@LEVAMIemail.it> ha scritto nel messaggio
news:3fcd8bb1...@news.tin.it...

Di solito queste cose le fanno per farti capire il funzionamento di RMI, non
è niente di particolare basta solo attenersi alle specifiche.
Poi sta a te quanto vuoi perderci la testa il []@4542 e perchè fai il
toString() di un oggetto...
Ciao
Ivan
PS Visto che sei già il secondo alle prese col problema del cinema, posti il
testo del progetto per curiosità

 totalmente distante dall'array creato, una cosa tipo []@4542 bah... 
E fino a qui non ci sono errori... L'importante e' capire cosa tenti di 
visualizzare...
Un array tipo:
PostiCinema[] posti
Allora per visualizzarlo:
System.out.println(posti.toString());
o meglio ancora:
for(int i=0;i<posti.length;i++)
	System.out.println(posti[i].toString());
-- 
Marco "Duff" Palermo
http://www.marcoduff.com/

Scusa ma perchè devi rispedire l'array al server?
Il client dovrebbe solo richiedere l'utilizzo del posto (riga,fila)... non
credi? Il server porrebbe poi l'id del client all'indice (riga,fila)
cosicchè  si sa
che il posto è occupato e da chi è occupato.
Inoltre devi fare in modo la prenotazione sia una transazione, ossia, quando
il client X fa richiesta per il posto (riga,fila) attende che il Server gli
dica
se la prenotazione è stata effettuata o meno...qualche altro client,
infatti, potrebbe prenotare tale posto mentre il client X sta "dando un
occhio" ai posti liberi...
Cioè ha letto i dati ma non ne ha ancora richiesto l'aggiornamento. L'array
in questione, quindi, è una risorsa condivisa dall'applicazione.
Ciao.

 istante.
Hey, ma già stai valutando la soluzione! *Prima* si deve fare l'analisi
dei requisiti!(Se deve o meno essere persistente allora potrebbe servire il
dbase ma non è detto!)
Non avevo letto "Università"... Caspita! Questo perchè dovrebbe insegnare
metodologie più che "L'arte di arrangiarsi"
1)Ma nel merito di quale esame ti hanno proposto questa traccia?
2)Dimmi che sei all'inizio del corso e che è solo un esercizio che serve per
capire le problematiche della proggettazione, please!



Sono sempre stucco, quello che ha postato in precedenza e che si sta
chiedendo se quello che sta facendo è corretto o meno.
per farmi stampare un'array a video dal client come devo fare non va
bene questo?
// recupero stream di input
			InputStream si = cli.getInputStream();
			InputStreamReader is = new
InputStreamReader(si);
			BufferedReader r = new BufferedReader(is);
 
			String line;
			while((line = r.readLine()) != null) {
				System.out.println(line);
				if(line.equals("Stop")) break;
			}
 
 
			// stampa a video del messaggio
			System.out.println(line);
--
Stucco
http://stucco.altervista.org

 capire le problematiche della proggettazione, please!
No, non sono all'inizio del corso...


 Mysql lo conosco da php, è difficile collegare java con mysql?
No, se hai usato in php le funzioni:
mysql_connect()
mysql_select_db()
mysql_query()
mysql_close()
allora diciamo che hai tutto.
Devi soltanto scaricarti i driver per java dal sito 
www.mysql.org
 + la 
documentazione.


 No, non sono all'inizio del corso...
Non era diretto a te ma a Stucco. Mea culpa!
Ciao.


Questo era quanto per il client, il server invece procede così, perchè
continua a stamparmi quella stringa incomprensibile? dove sbaglio?
//cinemaserver.java
// Questo è il nostro servitore cinema sulla porta 7777
//(permette le prenotazioni sulla base dei posti disponibili)
import java.net.*;
import java.io.*;
import javax.swing.*;
public class cinemaserver {
 
	public int[] arraytot(int capienza)  {
		int[] poltrone = new int [capienza];
		int i=0;
		for (i=0; i<capienza; i++){
			poltrone [i]=i+1;	
		}
		return poltrone;	
	}
 
	public static void main (String args[]) {
 
		ServerSocket ss = null;
		try {
			// creazione ServerSocket su porta 7777
			ss = new ServerSocket(7777);
 
			String stringainserita
=JOptionPane.showInputDialog("Capienza del cinema:");
 
			// ciclo senza fine:
			while(true) {
 
 
 
				//dichiariamo un intero e convertiamo
il valore scritto stringainserita in tale numero
				int capienza= Integer.parseInt
(stringainserita);
 
 
				// attesa connessione e recupero
socket cliente
				Socket clientSock = ss.accept();
				System.out.println("cliente
connesso");
 
				// recupero stream di output
 
				PrintWriter outp=new
PrintWriter(clientSock.getOutputStream(),true);
 
 
				cinemaserver a = new cinemaserver();
 
				// invio Data e Ora su stream di
output
				outp.println(a.arraytot (capienza));
 
				// chiusura socket
				clientSock.close();
			}
		} catch (UnknownHostException e) {
			System.err.println("Host unknown");
		} catch (Exception e) {
			System.err.println(e);
		}
 
	}
 
}
--
Stucco
http://stucco.altervista.org

 Non era diretto a te ma a Stucco. Mea culpa!
Ops!
Scusami anche tu allora!
Non ti nego che mi ero alquando "imbestialito" per la tua risposta tanto da 
diventare acido con la mia contro-risposta!



arraytot ritorna un array di int  se fai outp.println(a.arraytot
(capienza)); mette nel buffer quella stringa strana che non è altro che la
rappresentazione dell'oggetto.
Ti conviene ( non ricordo se c'è un metodo statico di String oppure no che
fa già la cosa ) crearti la stringa tu con una StringBuffer andando a
ciclare sull array e facendo un append di ogni int nell arrray
StringBuffer sb = new StringBuffer();
for ( i=0; i<mioArray.lenght;i++ ) {
    sb.append(mioArray[i]);
}
outp.println(sb.toString());


 [CUT]
