我试图阻止我的服务器在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");
}
}
答案 0 :(得分:0)
如果要阻止客户端连接,可以关闭服务器套接字。如果您希望在客户端连接后60秒发生这种情况,您可以使用计划的执行程序服务来计划将来关闭服务器套接字60秒
Executors.newSingleThreadScheduledExecutor().schedule(() -> serverSocket.close(), 60, TimeUnit.SECONDS);