Salve,
sto cercando di capire perchè la mia applicazione raggiunto un determinato punto non va più avanti nell'esecuzione, è come se entrasse in stand by! Si tratta di un'applicazione client-server!
La parte del server interessata è questa qui (Main):
codice:
ServerSocket server = null;
Socket ss = null;
try
{
server = new ServerSocket(5000);
System.out.println("Server in ascolto..");
while(true)
{
ss = server.accept();
/*Iscrizione dei client*/
if(ss != null)
{
System.out.println("Stabilita connessione con una socket!"); //
ObjectInputStream readInfo = new ObjectInputStream(ss.getInputStream());
String operazioneDettata = (String) readInfo.readUnshared();
ClientThread client = null;
if(operazioneDettata.equalsIgnoreCase("Iscrizione"))
{
System.out.println("Ci sono..."); //
client = new ClientThread(ss, operazioneDettata);
}
else
{
InfoUtente user = (InfoUtente)readInfo.readUnshared();
client = new ClientThread(ss, operazioneDettata, user, null);
}
client.start();
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
Parte della classe ClientThread
codice:
import java.util.*;
import java.net.*;
import java.io.*;
class ClientThread extends Thread{
public ClientThread(Socket s, String opUser) throws IOException
{
porta=s;
fromClient = new ObjectInputStream(porta.getInputStream());
toClient = new ObjectOutputStream(porta.getOutputStream());
operazioneUtente = opUser;
}
public ClientThread(Socket s, String opUser, InfoUtente dati, ArrayList<ClientThread> connessi) throws IOException
{
porta=s;
fromClient = new ObjectInputStream(porta.getInputStream());
toClient = new ObjectOutputStream(porta.getOutputStream());
operazioneUtente = opUser;
datiUtente = dati;
utentiConnessi = connessi;
}
public void updateList(ArrayList<ClientThread> newList)
{
utentiConnessi = newList;
}
public InfoUtente getInfoUser()
{
return datiUtente;
}
public void run()
{
System.out.println("THREAD AVVIATO"); // QUESTO PUNTO NON VIENE RAGGIUNTO
//CORPO...
}
Invece la parte del client interessata è la seguente:
codice:
public Iscrizione(File datiUtente) //istanza della classe iscrizione
{
try
{
System.out.println("CI ARRIVO 1"); //
this.datiUtente=datiUtente;
connect = new Socket("localhost", 5000);
System.out.println("CI ARRIVO 2"); //
inviaDati = new ObjectOutputStream(connect.getOutputStream());
System.out.println("CI ARRIVO 3"); //
//riceviDati = new ObjectInputStream(connect.getInputStream());
inviaDati.writeUnshared("Iscrizione");
inviaDati.flush();
InputStream in = connect.getInputStream();
System.out.println("CI ARRIVO 4"); //
riceviDati = new ObjectInputStream(in);
System.out.println("CI ARRIVO 5"); // QUESTO PUNTO NON VIENE RAGGIUNTO
String risposta = (String)riceviDati.readUnshared();
//RESTO DEL CORPO
}
Praticamente i punti indicati lato server e lato client non vengono raggiunti! Lì il programma non va più avanti!
Da cosa può dipendere il problema?
Dal thread che non viene lanciato? Oppure dell'oggetto objectInuptStream?