![](/img/trans.png)
[英]Java TCP server socket accepting multiple clients on different ports
[英]Closing server with socket accepting clients
我試圖在60秒后停止我的服務器接受客戶端,我實現了以下情況:沒有人連接到服務器,它確實在60秒后通過setSoTimeout
方法停止,但是我應該如何在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");
}
}
如果要阻止客戶端連接,可以關閉服務器套接字。 如果您希望在客戶端連接60秒后發生這種情況,則可以使用預定的執行程序服務將服務器套接字的關閉預定在未來60秒內進行
Executors.newSingleThreadScheduledExecutor().schedule(() -> serverSocket.close(), 60, TimeUnit.SECONDS);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.