套接字空闲超时异常在java中

时间:2016-11-28 01:16:37

标签: java sockets tcp

基本上我是套接字编程的新手。我想知道如果在指定的时间间隔内保持空闲状态,如何关闭套接字。我在网上搜索了这个,我找到了用于在指定的间隔后关闭套接字的函数。但在我的情况下,我想关闭套接字只有当它处于空闲状态超过指定的时间间隔时

1 个答案:

答案 0 :(得分:0)

  

我在网上搜索了这个

为什么呢? Javadoc存在。不需要搜索。

  

我找到了用于在指定间隔后关闭套接字的函数

没有这样的方法。

  

我看到setSoTimeOut(2000)函数在指定的时间间隔后关闭套接字

不,不。它根本不关闭套接字,如果在超时期限内没有数据到达,它会导致read方法抛出SocketTimeoutException

  

但我想只在套接字在指定的时间间隔内保持空闲时才关闭

Socket.setSoTimeout()正是您所需要的。

  

客户端与服务器建立连接,然后稍后客户端在执行所需任务后关闭其侧面的套接字连接,并在下次ping时创建新连接,而我的服务器不关闭连接,它继续听取客户端

换句话说,您的服务器忽略了套接字上的流末尾。不要那样做。如果从read方法获得流结束,请关闭套接字。