【问题标题】:Does java.net.Socket detect client timeouts?java.net.Socket 是否检测客户端超时?
【发布时间】:2020-02-15 15:25:28
【问题描述】:

我将 Scalajava.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)?

是立即抛出异常还是有一些超时检测功能?

【问题讨论】:

    标签: java sockets timeout


    【解决方案1】:

    你可以试试socket.setSOTimeout(5000)。 在这种情况下,如果读取输入流的时间超过 5 秒,则会抛出异常 java.io.InterruptedIOException。

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 2012-01-10
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2012-12-06
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多