我使用套接字在java中进行编程,并面对下面提到的问题。
我编写了一个服务器程序,它向客户端发送一个纯文本。当我启动服务器时,服务器程序等待很长时间让客户端套接字连接。但是我希望服务器程序只等待一个指定时间为5分钟,然后报告用户客户端在指定时间内未连接。 我无法理解如何实现它。我已经通过了Timer和TimerTask类,但它有点令人困惑。
答案 0 :(得分:4)
使用ServerSocket.setSoTimeout(int timeOut)等待客户端。如果您需要无限期等待,请将其设置为0
。
注意:Java doc说:
必须在进入阻止操作之前启用该选项 有效果。
答案 1 :(得分:1)
由于java API doc描述了' Socket.accept()': 抛出: IOException - 如果在等待连接时发生I / O错误。 SecurityException - 如果存在安全管理器且其checkAccept方法不允许该操作。 SocketTimeoutException - 如果之前使用setSoTimeout设置了超时并且已达到超时。