Salve a tutti! E' il mio primo post, per cui mi presento. Mi chiamo Adriano e studio ingegneria informatica. Posto il codice per chiarezza, lo commenterò alla fine.
codice:
import java.io.*;
import java.lang.*;
import java.util.*;
import java.net.*;

//Devo fare in modo che partano due thread, uno per il cliente e uno per il taxi

public class Gestore implements Runnable{
	private LinkedList <Taxi> taxilist = new LinkedList <Taxi> ();
	private ServerSocket ss;
	private DataInputStream is;
	private DataOutputStream os;
	private ObjectInputStream ois;
	private BufferedReader br;
	private Gestore gest;
	private Socket cs;
	
	public static void main(String args[]) throws IOException{
		System.out.println("Sono il Server Gestore");
		Gestore g = new Gestore();
		g.init();
	}
	
	public void init(){
		try{
			ss = new ServerSocket(50000);
			while(true){
				cs = ss.accept();
				os = new DataOutputStream(cs.getOutputStream());
				is = new DataInputStream(cs.getInputStream());
				br = new BufferedReader(new InputStreamReader(cs.getInputStream()));
				System.out.println("Identificazione In corso");
				boolean id;
				id = is.readBoolean();//se leggo true è un taxi, se leggo false è un cliente
				Thread.sleep(5000);
				if(id == true){
					gest = new Gestore();
					Thread tg = new Thread(gest);
					tg.start();
				}
			}
		}
		catch(IOException e) {System.out.println("Error "+e);}
		catch(InterruptedException e) {System.out.println("Error "+e);}
	}
	
	public void run(){
		//thread taxi
		try{
			System.out.println("Benvenuto Taxi");
			//Qui si blocca, dice che lo stream is è null
			//se copio il codice dentro l'if invece che far partire il thread funziona.
			int x = is.readInt();
			int y = is.readInt();
			boolean libero = is.readBoolean();
			int tid = taxilist.size()+1;
			os.writeInt(tid);
			Posizione pos = new Posizione(x,y);
			Taxi taxiapp = new Taxi(pos,libero,tid);
			taxilist.add(taxiapp);
			os.writeBoolean(true);
		}
		catch(IOException e){System.out.println("Errorrrrrrrr");}
	}
}
Dunque questo server deve gestire le richieste di due client: taxi e cliente. Per ora ho implementato solo la parte relativa al taxi. L'errore è alla riga 53 ovvero
codice:
int x = is.readInt();
A runtime ricevo una eccezzione di tipo NullPointerException quindi è come se lo stream is sia null. Dentro il metodo init() gli stream funzionano perfettamente, quindi il problema è evidentemente del run(). Spero di essere stato chiaro e vi ringrazio per l'attenzione