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
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);}
	}
}
Sul client non accade nulla di strano. Ecco il server:
codice:
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);}
	}
}
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 reset
precisamente la riga di codice che dovrebbe essere incriminata è questa
codice:
app = (Taxi) ois.readObject();
E' un giorno intero che sbatto la testa su questo problema, ho provato di tutto! Grazie per l'attenzione