[Java] Problema gestione chiusura socket in un progetto

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Vinsolo
Prode Principiante
Messaggi: 3
Iscrizione: martedì 19 maggio 2015, 0:42

[Java] Problema gestione chiusura socket in un progetto

Messaggio da Vinsolo »

Salve a tutti, mi sono iscritto per chiedere una mano anche se in passato ho già attinto da questo forum ogniqualvolta si presentasse una difficoltà. Questa volta non sono riuscito a trovare nulla con la ricerca per cui eccomi a chiedere a voi .. Sto preparando un progetto scolastico che prevede una comunicazione client server in multiThread. Il progetto è pronto se non che avrei intenzione di attivare (lato server ) un JButton che disattiva la connessione, e di conseguenza mi piacerebbe che nel momento in cui premo disattiva i client connessi non avendo più una connessione attiva facciamo System.exit(0) dopo aver mostrato un JOptionPane...Il problema è che il mio protocollo di comunicazione si basa sulla comunicazione del client(in seguito alla pressione dei vari bottoni) che fa una richiesta e del server che con una serie di if else accoglie la risposta e la soddisfa..Ora mi chiedo, se è il client colui che per primo invia qualcosa al server, come fa ad essere in attesa o a controllare anche con un thread dedicato se il server è online o meno considerando che deve essere il client il primo a inviare qualche dato?
Vi ringrazio in anticipo e vi auguro una buona giornata
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [Java] Problema gestione chiusura socket in un progetto

Messaggio da SuperStep »

Ciao, benvenuto sul forum.

Quando una Socket TCP per qualche ragione viene chiusa e non puo' comunicare vengono lanciate (Dalla Socket Client) questi 3 tipi di eccezzioni

Codice: Seleziona tutto

InterruptedException
UnknownHostException
IOException
la prima e' quando viene interrotta, la seconda quando provi ad instradare la connessione verso un host "invalido", la terza quando c'e' un errore di comunicazione... prendendo in considerazione che hai detto di utilizzare piu' thread, un metodo per implementare quello che vuoi puo' essere questo:

Codice: Seleziona tutto

class MyClientConnection implements Runnable {

    public void run() {
         //other code
        while(running) {
            try{
                socket.faiQualcosa();
            }
            catch(InterruptedException e) { System.exit(0); }
        }
    }
}
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Vinsolo
Prode Principiante
Messaggi: 3
Iscrizione: martedì 19 maggio 2015, 0:42

Re: [Java] Problema gestione chiusura socket in un progetto

Messaggio da Vinsolo »

Intanto grazie mille per aver risposto, premetto che sono dovuto andare a lavoro quindi ho provato solo 5 minuti ad applicare quello che mi hai detto, il problema ê che l'unico metodo che mi permette di tenere il blocco try catch con interruptdedexception é con wait(), tutti gli altri lanciano altre eccezioni e quindi non sono riuscito, non so se sono stato chiaro, nel frattempo continuerò a provare appena possibile
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [Java] Problema gestione chiusura socket in un progetto

Messaggio da SuperStep »

non ti ho capito... se posti un esempio di codice cosi' porto una soluzione adatta al tuo problema.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Vinsolo
Prode Principiante
Messaggi: 3
Iscrizione: martedì 19 maggio 2015, 0:42

Re: [Java] Problema gestione chiusura socket in un progetto

Messaggio da Vinsolo »

Guarda non saprei come spiegare meglio, per farmi capire meglio provo così: creo un Thread e nel run scrivo :
while(true){
try{
socket.esempio();
}catch(InterruptedExcepton e){
System.exit(0);
}
}

Ecco, non posso utilizzare nessun metodo a parte wait() in quella socket, perchè nessun altro metodo mi da la possibilità di fare il try catch di InterruptedException
senza darmi errori, solo wait permette di utilizzare quel blocco try catch
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti