EnZiMa
09-09-2007, 15:44
Ho un problemino con la comunicazione tra client e server.
Ho un server che ha una serverSocket che rimane in ascolto con un timeout di 5 secondi.
ecco il codice del client :
private void connetti(String ip, int porta) {
try {
Socket clientSocket = new Socket(ip, porta);
clientSocket.setSoTimeout(5000);
Thread.sleep(7000); //Simulazione di ritardo
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
if(clientSocket.isConnected())
System.out.println("Connessione stabilita con il Server "+format(clientSocket)+"\n");
while (true) {
System.out.print("Client > ");
String userInput = stdIn.readLine();
if(userInput.equalsIgnoreCase("quit")){
System.out.println("Connessione terminata con il Server "+format(clientSocket));
break;
}
else if(clientSocket.isClosed()){
System.out.println("Connessione terminata con il Server "+format(clientSocket));
break;
}
out.println(userInput);
out.flush();
}
stdIn.close();
in.close();
out.close();
clientSocket.close();
} catch (UnknownHostException e) {
System.out.println("Impossibile connettersi al Server "+ip+":"+porta+" Host sconosciuto!");
} catch (IOException e) {
System.out.println("Errore nella connessione con il Server "+ip+":"+porta);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Volendo simulare un ritardo ho inserito nel client Thread.sleep(7000), in questo modo dopo aver creato il socket aspetta 7 secondi, nel frattempo il server ha chiuso la socket....il problema č che mi inizializza lo stesso gli stream ed entra lo stesso nel ciclo while...come mai? :mc: :confused:
Grazie :)
Ho un server che ha una serverSocket che rimane in ascolto con un timeout di 5 secondi.
ecco il codice del client :
private void connetti(String ip, int porta) {
try {
Socket clientSocket = new Socket(ip, porta);
clientSocket.setSoTimeout(5000);
Thread.sleep(7000); //Simulazione di ritardo
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
if(clientSocket.isConnected())
System.out.println("Connessione stabilita con il Server "+format(clientSocket)+"\n");
while (true) {
System.out.print("Client > ");
String userInput = stdIn.readLine();
if(userInput.equalsIgnoreCase("quit")){
System.out.println("Connessione terminata con il Server "+format(clientSocket));
break;
}
else if(clientSocket.isClosed()){
System.out.println("Connessione terminata con il Server "+format(clientSocket));
break;
}
out.println(userInput);
out.flush();
}
stdIn.close();
in.close();
out.close();
clientSocket.close();
} catch (UnknownHostException e) {
System.out.println("Impossibile connettersi al Server "+ip+":"+porta+" Host sconosciuto!");
} catch (IOException e) {
System.out.println("Errore nella connessione con il Server "+ip+":"+porta);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Volendo simulare un ritardo ho inserito nel client Thread.sleep(7000), in questo modo dopo aver creato il socket aspetta 7 secondi, nel frattempo il server ha chiuso la socket....il problema č che mi inizializza lo stesso gli stream ed entra lo stesso nel ciclo while...come mai? :mc: :confused:
Grazie :)