Buonasera! Sono ancora alle prese con una gestione di taxi client-server. Ho reimplementato tutte le classi seguendo i vostri consigli, ma accade una cosa stranissima.
Premetto che per ora ho solo creato 3 classi: Taxi,Gestore e Posizione.
Taxi: client
Gestore: server
Posizione: solo 2 attributi (2 interi) e un costruttore
Ecco il Taxi
Sul client non accade nulla di strano. Ecco il server:codice:import java.io.*; import java.lang.*; import java.util.*; import java.net.*; public class Taxi implements Runnable,Serializable{ private Socket s; private boolean libero; private Posizione p; protected int id; protected ObjectOutputStream oos; protected ObjectInputStream ois; public Taxi(){ //taxi creato } public Taxi(int a, int b, boolean l){ p = new Posizione(a,b); libero = l; } public static void main(String args[]){ Taxi tx = new Taxi(); Thread t = new Thread(tx); t.start(); } public void run(){ try{ s = new Socket("localhost", 12345); oos = new ObjectOutputStream(s.getOutputStream()); ois = new ObjectInputStream(s.getInputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); oos.writeObject(true);//dico al server che sono un taxi oos.flush(); System.out.println("Inserisci le tue coordinate: "); int a = Integer.parseInt(br.readLine()); int b = Integer.parseInt(br.readLine()); System.out.println("Stato del taxi: "+true); Taxi otx = new Taxi(a,b,true); System.out.println("Mando oggetto taxi al server"); oos.writeObject(otx); } catch(IOException e){System.out.println("Error "+e);} } }
Qui dopo aver eseguito la prima readObject() ovvero la lettura del booleano che mi identifica il taxi, non legge più nulla e và in Socket Exception: connection resetcodice:import java.io.*; import java.util.*; import java.lang.*; import java.net.*; public class Gestore implements Runnable,Serializable{ private ServerSocket ss; private Socket cs; protected LinkedList <Taxi> taxilist = new LinkedList <Taxi> (); protected ObjectOutputStream oos; protected ObjectInputStream ois; public Gestore(){ //Gestore creato } public static void main(String args[]){ Gestore g = new Gestore(); Thread t = new Thread(g); t.start(); } public void run(){ try{ ss = new ServerSocket(12345); boolean id; while(true){ System.out.println("Ciao sono il Server"); cs = ss.accept(); oos = new ObjectOutputStream(cs.getOutputStream()); ois = new ObjectInputStream(cs.getInputStream()); id = (boolean) ois.readObject(); System.out.println(ois.available()); if(id == true) { System.out.println("Benvenuto Taxi"); int tid = taxilist.size() +1; Taxi app = new Taxi(); app = (Taxi) ois.readObject(); app.id = tid; taxilist.add(app); //CHIAMATA THREAD GESTORETAXI } else{ //CHIAMATA THREAD GESTORECLIENTI } } } catch(IOException e){System.out.println("Error "+e);} catch(ClassNotFoundException e){System.out.println("Error "+e);} } }
precisamente la riga di codice che dovrebbe essere incriminata è questa
E' un giorno intero che sbatto la testa su questo problema, ho provato di tutto! Grazie per l'attenzionecodice:app = (Taxi) ois.readObject();![]()

Rispondi quotando