簡體   English   中英

如何在Java中關閉ServerSocket.accept()命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM