2013-07-10 35 views
0

我一直在開發用於實時消息傳遞的軟件。在我的代碼中,我創建了一個ServerSocket對象並等待客戶端連接到它。在有限時間內運行一段代碼

... 
ServerSocket serverSocket=new ServerSocket(serverPort); 
socket=serverSocket.accept(); 
... 

然而,如果沒有客戶端試圖連接到服務器的特定時間內,比如10秒,我的代碼應該能夠停止等待一個客戶端,並保持運行的下一行。但是,代碼在socket=serverSocket.accept();中搜索,直到客戶端嘗試建立連接。我怎樣才能避免這樣?

+0

Move socket = serverSocket.accept();到另一個線程。 – yatul

回答

4

設置套接字超時之前接受如下

serverSocket.setSoTimeout(10000); // 10 secs. time is in milisecs. 
socket=serverSocket.accept(); 

這將阻止接受,持續10秒,如果沒有客戶端它移動。

但是,如果您打算保持打開服務器套接字,然後創建一個新線程接受客戶端。