Timeout su socket

mememe

Nuovo Utente
13 Nov 2011
2
0
0
Salve a tutti, mi sono appena iscritto perchè sto impazzendo con un programma che ho trovato proprio su questo sito al seguente indirizzo: https://www.mrw.it/java/articoli/semplice-chat-java_1132.html . Sto tentando di mettere un timeout lato client per fare in modo che l'host non risponda per un tempo indefinito e dal lato server pe far si che il server non rimanga in attesa troppo a lungo. Ho provato ad impostare nella classe "JMrClient" un int timeout = 15000; passandolo poi a socket.setSoTimeout(timeout) subito sotto l'inizializzazione della socket, così facendo il client non è più attivo dopo 15 secondi, ma su eclipse mi lancia la seguente eccezione:java.net.SocketTimeoutException: Read timed out che non riesco a gestire...qualcuno potrebbe darmi una mano?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Non ho capito scusa, qual è il problema? Metti un blocco try/catch intorno alla riga che lancia l'eccezione in cui notifichi l'utente del problema ed interrompi l'esecuzione del programma. Qualcosa di questo tipo:
Codice:
import java.net.SocketTimeoutException;

// ...

try {
    // ...
} catch (SocketTimeoutException e) {
    System.out.println("Il server non risponde (timeout).");
    System.out.exit(1);
}
 

mememe

Nuovo Utente
13 Nov 2011
2
0
0
Mi lancia l'eccezione nel metodo dove sono stati definiti gli stream di input:

public String receive() throws IOException {
String line = "";
InputStream inStream = socket.getInputStream();
int read = inStream.read();
while (read!=10 && read > -1) {
line+=String.valueOf((char)read);
read = inStream.read();
}
if (read==-1) return null;
ine+=String.valueOf((char)read);
return line;
}

come faccio a mettere un try/catch li?
 

Discussioni simili