使用套接字接受客户端关闭服务器

时间:2018-04-17 11:14:13

标签: java sockets

我试图阻止我的服务器在60秒后接受客户端,我已经实现了没有人连接到服务器的情况,它确实通过setSoTimeout方法在60秒后停止,但应该如何我停止了服务器 有人连接60秒后?

public void start() {
    try {
        final InetAddress address = InetAddress.getByName(host);
        serverSocket = new ServerSocket(port, 50, address);
        serverSocket.setSoTimeout(60 * 1000);
        while (!Thread.currentThread().isInterrupted()) {
            final Socket newSocket = serverSocket.accept();
            final ClientContainer newClient = new ClientContainer(clientID.getAndIncrement(), newSocket);
            executorService.execute(new ClientContainerRunnable(newClient, this));
        }
    } catch (SocketTimeoutException e) {
        System.out.println("timeout expired");
    } catch (IOException e1) {
        System.out.println("Server stopped");
    }
}

1 个答案:

答案 0 :(得分:0)

如果要阻止客户端连接,可以关闭服务器套接字。如果您希望在客户端连接后60秒发生这种情况,您可以使用计划的执行程序服务来计划将来关闭服务器套接字60秒

 Executors.newSingleThreadScheduledExecutor().schedule(() -> serverSocket.close(), 60, TimeUnit.SECONDS);