Ciao a tutti,
ho un datagramChannel che invia un pacchetto ed aspetta la risposta per 2 secondi e se non arriva riprova per 10 volte.
se il pacchetto di risposta arriva va avanti nell'esecuzione e aspetta altri pacchetti con una receive bloccante.
per il timeout uso nu selector, ed il selector accetta solo channels non bloccanti. quindi faccio come segue
channel.configureBlocking(false);
for(....)
selector.select() // per dieci volte a meno che non riceva il pacchetto
selector.close()
channel.configureBlocking(true);
se il pacchetto di risposta arriva subito non mi da problemi ma se ad esempio il primo si perde ed arriva il secondo
(il che implica ceh scatta il timeout nel selector) mi solleva una illagalBlockingModeException() quanto tento di rimettere
il socket a bloccante (channel.configureBlocking(true))
qualcuno mi sa dire il perche ?
grazie
MB

Rispondi quotando