java.net.Socket是否检测客户端超时?
我将Scala与java.net.Socket和java.net.ServerSocket一起使用 我想检测与客户端的套接字连接何时断开/超时 我实现了自己的检测,如下所示:java.net.Socket是否检测客户端超时?,java,sockets,timeout,Java,Sockets,Timeout,我将Scala与java.net.Socket和java.net.ServerSocket一起使用 我想检测与客户端的套接字连接何时断开/超时 我实现了自己的检测,如下所示: var break = false var startTime = System.currentTimeMillis() while(!break){ if(inputstream.ready()){ //...parse input startTime = System.currentTimeMill
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毫秒内没有收到来自客户端的消息时关闭套接字
但是我想知道库中是否有我可以用来检测超时的东西
如果客户端关闭其程序或其Internet连接终止等,在网络层、传输层或其他方面是否存在我的服务器可以通过库(java.net.Socket)立即知道的内容
是否立即引发异常或是否有超时检测功能?您可以尝试
socket.setSOTimeout(5000)
。
在这种情况下,如果读取输入流所需时间超过5秒,将引发异常java.io.InterruptedIOException