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