如何在java中关闭ServerSocket.accept()命令?

How to close the ServerSocket.accept() command in java?

我的问题是 ServerSocket.accept() 命令一直在等待,直到客户端连接到它。但我想做的是我必须听客户几秒钟。如果客户端连接,则我向客户端发送数据,否则我必须终止 ServerSocket。

那么当一段时间没有客户端连接时,如何绕过 ServerSocket.accept() 命令?

调用 ServerSocket.close()(当然是从另一个线程)。 SocketException 将因 accept() 上的任何线程阻塞而被抛出,但如果已建立连接,则现有 Socket 仍然可以。

一个简单而幼稚的例子

    ServerSocket ss = new ServerSocket(8123);

    new Thread() {
        @Override
        public void run() {
            try {
                Thread.sleep(5000);
                ss.close();
            } catch(InterruptedException e) {
            } catch(IOException e) {
            }
        }
    }.start();
    Socket s = ss.accept();