Allora, devo creare un sisteam client/server e per farlo utilizzo 3 classi:
CollabServer che rappresenta il server
CollabHandler che gestisce una singola connessione di un utente
ServizioCinema che rappresenta il client
Ho passato la fase di compilazione, il server accetta conessioni ma quando la conessione avviene sia il server che il client si bloccano sulla creazione dell'ObjectInputStream e dell'ObjectOutputStream.
non riesco a capire perchè!
questa è la classe che dovrebbe gestire la singola connessione
collabhandler:
Questa è la classe che idealizza il servercodice:package serverclientprova; import java.net.*; import java.io.*; import java.util.*; import java.awt.*; // import prominence.msg.*; ????? import java.util.logging.Level; import java.util.logging.Logger; public class CollabHandler extends Thread { protected Socket socket; protected ObjectInputStream ois; protected ObjectOutputStream oos; protected CollabServer S; //-------------------------------------------------- public CollabHandler(Socket socket, CollabServer CS) throws IOException { S = CS; this.socket = socket; try{ System.out.println("qui arriva 1"); ois = new ObjectInputStream(socket.getInputStream()); System.out.println("qui non arriva 2"); oos = new ObjectOutputStream(socket.getOutputStream()); }catch (IOException e) { System.out.println("QuestaIO Exception" + "\n"); } start(); } . . ...
CollabServer:
lo stesso errore lo da anche in ServizioCinema (il client):codice:package serverclientprova; import java.net.*; import java.io.*; import java.util.*; public class CollabServer { //-------------------------------------------------- protected static FilmInProg [] vFiP; 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, this); }catch(IOException e){ System.out.println("IO Exception" + "\n"); }//Istanziamo un oggetto CollabHandler per gestire la connessione } } } . . ...
Netbean compila tutto tranquillamente, ma in esecuzione si blocca su quelle istruzioni in grassetto.codice:package clientserverprova; import java.io.*; import java.awt.*; import java.net.*; //import prominence.msg.*; import java.util.logging.Level; import java.util.logging.Logger; public class ServizioCinema extends Frame { protected static int id = 0; Label LMsgServer, LInfoFilm, LSala, LOrario, LPostiLiberi; TextArea TAInfoFilm, TAMsgServer; TextField TFSala, TFOrario, TFPostiLiberi; Button BRichiedi, BPostiLiberi, BCompra, BReset; ObjectInputStream Ois; ObjectOutputStream Oos; Button [][] Mb; String S, O; short [][] D; Color g, r, b; public ServizioCinema (InputStream i, OutputStream o) throws IOException { super ("Servizio Cinema " + (id ++)); this.setLayout(null); //che fa???? setResizable(false); try { System.out.println("qui arriva 1"); Ois = new ObjectInputStream (i); System.out.println("qui non arriva 1"); Oos = new ObjectOutputStream (o); }catch (IOException e){ System.out.println("oh 4"); System.out.println("IOException E" + "\n"); } g = Color.GREEN; r = Color.RED; b = Color.BLUE; . . ...
ecco l'output del server:
e quello del client:codice:init: deps-jar: Compiling 1 source file to D:\Download\PROGRAMMAZIONE D RETE\Primo Progetto\ServerclientPROVA 1.1\build\classes compile: run: Accepting connections... Accepted from /127.0.0.1 qui arriva 1
l'errore "Note: D:\Download\PROGRAMMAZIONE D RETE\Primo Progetto\CLIENTSERVERPROVA 1.1\src\clientserverprova\ServizioCinema.java uses or overrides a deprecated API.codice:init: deps-jar: Compiling 1 source file to D:\Download\PROGRAMMAZIONE D RETE\Primo Progetto\CLIENTSERVERPROVA 1.1\build\classes Note: D:\Download\PROGRAMMAZIONE D RETE\Primo Progetto\CLIENTSERVERPROVA 1.1\src\clientserverprova\ServizioCinema.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. compile: run: qui arriva 2
Note: Recompile with -Xlint:deprecation for details." credo sia perchè uso alcuni metodi deprecati per creare il frame.
Qualcuno mi sa dire perchè in runtime si bloccano entrambi su sti objectStream??? Li ho dichiarati in qualche modo sbagliato? Ho sbagliato aprendere l'inputstream e l'outputstream? Dio mi vuole male?
Non so dove mettere le mani : \
Grazie in anticipo per l'aiuto

Rispondi quotando