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 :
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?codice: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(); } }![]()
![]()
Grazie![]()

Rispondi quotando

