Ringrazio in anticipo tutti coloro che mi potranno dare qualunque tipo di suggerimento,ho un problema inerente alla classe
socket o almeno credo.
In poche parole, ho creato un sito in cui si può giocare a risiko online, il server fila liscio per un bel pò di ore, ma
ad un certo punto si blocca tutto e non riceve più messaggi dai client.
Ora ho notato che dopo 10 di minuti si riprende e prima di riprendersi mi lancia questa eccezione:
ScambiaMessaggi.run() IOException...Run() user=NOMEGIOCATORE eccezione=java.net.SocketException: Connection timed out:
Connection timed out
java.net.SocketException: Connection timed out: Connection timed out
at java.net.SocketInputStream.socketRead(Native Method)
at java.net.SocketInputStream.read(SocketInputStream. java:86)
at java.net.SocketInputStream.read(SocketInputStream. java:102)
at java.io.DataInputStream.readInt(DataInputStream.ja va:338)
at Server.ScambiaMessaggi.run(ScambiaMessaggi.java:31 )
l'istruzione a ScambiaMessaggi.java:31 è la seguente
int i = _inputStream.readInt();
e _imputStream è stata inizializzata nel costruttore della classe che riceve come paramentro il socket con la seguente
istruzione
_inputStream = new DataInputStream(_socket.getInputStream());
Inoltre,il blocco del server non è immediato ma avviene piano piano. Inizialmente pensavo fosse un errore di deadlock ma
posso assicurarvi che non lo è.
Se non sbaglio, il blocco dei thread avviene sulla classe che invia a tutti i client un messaggio...non so dirvi se il
blocco avviene quando invia il messaggio al client che in seguito mi dà poi l'eccezione di timeout
Ora io penso che il problema dipenda dal socket e soprattutto vorrei capire in quale circostanza viene lanciata
l'eccezione sul time out mi potrebbero servire i metodi (anche se non so a cosa servono) socket.setSoTimeout()?
Aggiungo infine che, leggendo con il metodo socket.getSOTimeout() mi ritorna il valore 0.
Grazie ancora


Rispondi quotando
