Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [java] client-server

    Buongiorno sto sviluppando una piccola chat in java ma ho un problrma quando il client crasha il server non se ne accorge e si incasina tutto.
    Mentre se il client esce normalmente è tutto ok.
    Come potrei fare per controllare che il client sia connesso senza sprecare troppe risorse?
    Chi mi da un idea?
    Ciao

  2. #2
    up!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670
    mah, dopo un tot di tempo fagli una sorta di ping da tuo programma, per vedere se il client è ancora connesso, se ti risponde c'è altrimenti no!!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    a me sembra molto strano che il server non si accorga della caduta del client: se il client perde la connessione per un motivo X il server dovrebbe ricevere una SocketException oppure una EOFException.

    La prima indica una perdita della connessione (un crash, o simili), la seconda significa che la connessione è stata fatta cadere chiudendo la socket.

    Controlla di aver catturato queste eccezioni (separatamente, per capire che tipo di problema è accaduto). Prova, oltretutto, a far stampare lo stack di esecuzione delle eccezioni:
    codice:
    try {
       ...
    } catch (SocketException se) {
       se.printStackTrace();
    } catch (EOFException eofe) {
       eofe.printStackTrace();
    }
    Inoltre, cosa vuol dire che si incasina tutto? Ricordo che il blocco try/catch andrebbe messo all'esterno di un eventuale loop, non all'interno del loop stesso!


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Si lele tu hai ragione ma il soket solleva l'eccezione se il server prova a mandare un messaggio al client, ma se esempio, tizio e caio sono loggati nella chat non stanno scrivendo tizio per qualunque motivo si disconnette nessun nuovo utente entra (questo farebbe ricaricare la lista degli utenti)se caio prova a scrivere a tizio dato che lo vede in lista si solleva l'eccezione ma oramai è troppo tardi, caio sta scrivendo ad un fantasma e non lo sa

    O.T
    Comunque lele lo script di quel server tu ce l'hai

    Ciao

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Molto strano... :master: so di quale server stai parlando ( ), ma io ho aggiunto appositamente una istruzione nella classe ServerThread
    codice:
    ls.togliUtente(idClient);
    al verificarsi di una EOFException.

    Se si verifica una SocketException, allora l'utente è stato kikkato e la notifica viene inviata direttamente dalla classe LeleServer.

    Le prove che ho effettuato io non mi hanno dato di questi problemi.... anche se.... certo, non ho mai provato a spegnere brutalmente il PC di un client...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.