Я использую Scala с java. net .Socket и java. net .ServerSocket .
Я хочу определить, когда соединение сокета с клиентом отключено / истекло время ожидания.
Я реализовал свое собственное обнаружение, как это, которое работает:
var break = false
var startTime = System.currentTimeMillis()
while(!break){
if(inputstream.ready()){
//...parse input
startTime = System.currentTimeMillis()
}else if(System.currentTimeMillis() - startTime >= 5000){
break = true
}
}
socket.close()
Поэтому моя реализация закрывает сокет, когда сообщение не было получено от клиента в течение 5000 мс.
Но мне интересно, есть ли в библиотеке что-то, что я могу использовать вместо этого для определения тайм-аута.
Если клиент выключает свою программу или его соединение Inte rnet завершается и т. Д. c, есть ли что-то на сетевом уровне, транспортном уровне или иным образом, что каким-то образом мой сервер может узнать немедленно через библиотека (java. net .Socket)?
Выдается ли исключение немедленно или есть какая-то функция обнаружения тайм-аута?