[英]How to close the ServerSocket.accept() command in java?
我的問題是ServerSocket.accept()命令一直等待,直到客戶端已連接到它為止。 但是我想做的是我必須聽客戶幾秒鍾。 如果客戶端連接,則我將數據發送到客戶端,否則必須終止ServerSocket。
那么當一段時間沒有客戶端連接時,如何繞過ServerSocket.accept()命令?
調用ServerSocket.close()
(當然是從另一個線程調用)。 對於任何在accept()
上阻塞的線程,都會拋出SocketException
,但是如果建立了連接,則現有的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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.