Java 如何设置ServerSocket等待客户端套接字连接的时间限制

Java 如何设置ServerSocket等待客户端套接字连接的时间限制,java,sockets,networking,timer,timertask,Java,Sockets,Networking,Timer,Timertask,我正在使用套接字用java编程,并面临以下问题 我编写了一个服务器程序,向客户端发送纯文本。当我启动服务器时,服务器程序会等待很长一段时间,等待客户端套接字连接。但我希望服务器程序只等待指定的时间,例如5分钟,然后向用户报告客户端未在指定的时间内连接。 我无法理解如何实现它。我已经学习了Timer和TimerTask类,但它有点混乱。用于等待客户端。如果需要无限期等待,请将其设置为0 注:Java文档说明: 在进入阻止操作之前,必须启用该选项 有效果 正如java API文档描述的“Socket

我正在使用套接字用java编程,并面临以下问题

我编写了一个服务器程序,向客户端发送纯文本。当我启动服务器时,服务器程序会等待很长一段时间,等待客户端套接字连接。但我希望服务器程序只等待指定的时间,例如5分钟,然后向用户报告客户端未在指定的时间内连接。 我无法理解如何实现它。我已经学习了Timer和TimerTask类,但它有点混乱。

用于等待客户端。如果需要无限期等待,请将其设置为
0

注:Java文档说明:

在进入阻止操作之前,必须启用该选项 有效果


正如java API文档描述的“Socket.accept()”: 抛出: IOException-如果在等待连接时发生I/O错误。 SecurityException—如果安全管理器存在,且其checkAccept方法不允许该操作。 SocketTimeoutException-如果先前使用setSoTimeout设置了超时,并且已达到超时。


是的,我也经历了超时概念,但在这种情况下,服务器套接字本身会阻止客户端。举例来说,我打开了服务器程序,希望服务器等待客户端5分钟。但如果客户端程序启动,则在5分钟内,它必须连接。如果我将超时设置为5分钟,则在这种情况下客户在5分钟内才能连接,这完全符合我的需要。@有趣的是,你不知道你在说什么。设置超时不会引入另一个延迟。我建议你在进一步致力于这个荒谬的命题之前先尝试一下;ss.setSoTimeout(30000);ss.accept()。现在,当我第一次运行服务器程序和下一个客户端程序时,服务器拒绝连接30秒。在这段时间之后,连接就建立起来了。但我需要的是,服务器等待客户端2分钟,然后当时间结束时,服务器就不应该连接到客户端。