Premetto che questo è il mio primo programma in Java quindi ho parecchie lacune.
Devo realizzare un sistema client server, dove il server può ricevere infinite connessioni e crea un thread per gestire ogni connessione.
Il server è CollabServer, il Client è ServizioCinema e CollabHandler è la classe che si occupa di gestire una singola connessione.
Ora ho numerosi problemi che principalmente sono:
Invio e ricezione di oggetti (o meglio vettori di oggetti);
Visibilità di variabili tra classi (non riesco a far vedere la stessa variabile a 2 classi differenti).
Il server parte, accetta le connessioni, ma arrivato alle dichiarazioni degli object input stream si blocca e inzia a dare problemi.
Stessa cosa per il client che si connette al server ma, una volta dichiarati gli object stream, cessa di funzionare.
posto il codice delle 3 classi sopra citate mettendo in grassetto i punti in cui da problemi, spero che qualcuno di voi mi possa aiutare.
CollabServer
codice:package serverclientprova; import java.net.*; import java.io.*; import java.util.*; public class CollabServer { //-------------------------------------------------- protected static FilmInProg [] vFiP; /*HO PROVATO A DICHIARARE STATICA QUESTO VETTORE DI OGGETTI FilmInProg PER RENDERLA VISIBILE A COLLABHANDLER MA NON FUNZIONA*/ protected String info = ""; protected BufferedReader bis; protected BufferedWriter bos; protected int nM; public CollabServer() throws IOException { MemorizzaFile(); nM = ContaMatrici(); vFiP = new FilmInProg [nM]; CreaVettore(); ServerSocket server = new ServerSocket(1414); System.out.println ("Accepting connections..."); while(true) { Socket client = server.accept(); //ogni richiesta di connessione viene accettata System.out.println ("Accepted from " + client.getInetAddress()); try{ new CollabHandler(client, info, nM); }catch(IOException e){ System.out.println("IO Exception" + "\n"); }//Istanziamo un oggetto CollabHandler per gestire la connessione } } } public void MemorizzaFile () throws IOException { try{ bis = new BufferedReader(new InputStreamReader(new FileInputStream("DbCinema.txt"))); //apriamo il file di testo contenente le info String temp = ""; while( (temp = bis.readLine()) != null) info = info + temp + "\n"; } catch(IOException e){ System.out.println("IO Exception" + "\n"); } finally { try { bis.close(); } catch (IOException e) { System.out.println("IO Exception" + "\n"); } } } public int ContaMatrici () throws IOException { //conta il numero delle matrici che dovranno esser create String inputLine = ""; int num = 0; try { bis = new BufferedReader(new InputStreamReader(new FileInputStream("DbCinema.txt"))); //apriamo il file di testo contenente le info inputLine = bis.readLine(); while (inputLine.compareTo("FINE") != 0) { bis.readLine(); inputLine = bis.readLine(); while (inputLine.compareTo("---") != 0) { num++; inputLine = bis.readLine(); } inputLine = bis.readLine(); } } catch (IOException e) { System.out.println("IO Exception" + "\n"); } finally { try { bis.close(); } catch (IOException e) { System.out.println("IO Exception" + "\n"); } } return num; } public void CreaVettore () throws IOException { String NomeF, NomeS, t; int i = 0; try{ bis = new BufferedReader(new InputStreamReader(new FileInputStream("DbCinema.txt"))); NomeF = bis.readLine(); while (NomeF.compareTo("FINE") != 0){ NomeS = bis.readLine(); t = bis.readLine(); while (t.compareTo("---") != 0){ vFiP[i] = new FilmInProg( NomeF, NomeS, t); i++; t = bis.readLine(); } //per me questa cosa va gestita meglio... che facciamo continuiamo il while ugualemte???? NomeF = bis.readLine(); } }catch (IOException e) { System.out.println("IO Exception" + "\n"); }finally{ try { bis.close(); } catch (IOException e) { System.out.println("IO Exception" + "\n"); } } } //-------------------------------------------------- public static void main(String args[]) throws IOException { new CollabServer(); } }

Rispondi quotando