2012-09-06 44 views
1

有沒有辦法檢查到ServerSocket的傳入連接,所以我的服務器在等待連接時不會停止。檢查傳入連接到ServerSocket

我需要這樣的東西

try { 
if (server.thereisarequest()) { 
Socket socket = server.accept(); 
} 
} 
+0

爲什麼?只需在單獨的線程中運行正常的接受循環。 – EJP

回答

1

你確定你想要?提供代碼後,只有一個線程正在等待。運行處理接受連接的另一個線程,以便服務器不會停止。 您也可以使用java非阻塞異步I/O(nio和nio2),但在後臺有一個值班線程。

1

保持簡單...使用無限while循環,使服務器查找傳入的請求 ...這就是如何大多數服務器的工作..

while (true) { 

incoming = s.accept(); // incoming is of type Socket.        

} 
+0

和程序將繼續前進,否則它會停止並等待請求? – Qualphey

+1

它一直在等待請求.....'現在你需要把從s.accept()獲得的客戶端對象放到另一個單獨的線程中進行處理,而服務器一直在等待另一個客戶端......' –

+0

它保留在等待請求,但服務器仍在工作?我的意思是它仍然會在等待傳入請求時在每一幀上打印文本? – Qualphey

0

您可以創建一個新的線程來接受連接。

然後,你有兩個選擇:

  • 過程中一個新的線程
  • 插座把插座在隊列(ConcurrentLinkedQueue),並檢查它從你的主線程隊列。