Risultati da 1 a 3 di 3

Discussione: Timeout su socket

  1. #1
    mememe è offline Nuovo Iscritto
    Data Registrazione
    Nov 2011
    Messaggi
    2

    Timeout su socket

    Salve a tutti, mi sono appena iscritto perchè sto impazzendo con un programma che ho trovato proprio su questo sito al seguente indirizzo: http://www.mrwebmaster.it/java/artic...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?

  2. #2
    L'avatar di alessandro1997
    alessandro1997 è offline Super Moderatore
    Data Registrazione
    Oct 2009
    Località
    Roma
    Messaggi
    5,144
    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);
    }

  3. #3
    mememe è offline Nuovo Iscritto
    Data Registrazione
    Nov 2011
    Messaggi
    2
    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?

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •