[Java] Problema gestione chiusura socket in un progetto
[Java] Problema gestione chiusura socket in un progetto
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
Vi ringrazio in anticipo e vi auguro una buona giornata
- SuperStep
- 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
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
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:
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
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)
Re: [Java] Problema gestione chiusura socket in un progetto
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
- SuperStep
- 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
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)
Re: [Java] Problema gestione chiusura socket in un progetto
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
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
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti