Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.Socket是否检测客户端超时?_Java_Sockets_Timeout - Fatal编程技术网

java.net.Socket是否检测客户端超时?

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

我将Scala与java.net.Socketjava.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毫秒内没有收到来自客户端的消息时关闭套接字

但是我想知道库中是否有我可以用来检测超时的东西

如果客户端关闭其程序或其Internet连接终止等,在网络层、传输层或其他方面是否存在我的服务器可以通过库(java.net.Socket)立即知道的内容


是否立即引发异常或是否有超时检测功能?

您可以尝试
socket.setSOTimeout(5000)
。 在这种情况下,如果读取输入流所需时间超过5秒,将引发异常java.io.InterruptedIOException