2010-03-05 85 views
0

處理其他的事情我是來自埃塞俄比亞,所以我很抱歉,我的英語如何使服務器接受新的連接,而在Java中

我設計一個muiltithread服務器/客戶端應用程序和服務器都有自己的用戶界面,保留所有連接客戶端的列表問題是

ss = new ServerSocket(port); 

while (true) { 
// Grab the next incoming connection 

s = ss.accept(); 

ss.accept();阻止整個過程,並且我無法訪問服務器的其他功能。即使服務器正在接受新客戶端並且客戶端正在完美工作,服務器的用戶界面仍然完全freez。

於是我將做什麼,以使服務器接受新的連接,同時處理其他事情

回答

0

你應該派生線程,並調用accept

+0

問題提出者應該首先研究多線程,我相信。 – tafa 2010-03-05 15:34:38

1

這樣做有兩個(流行)的方式:

  1. 包含等待客戶端的阻塞環的主線程。當客戶端編輯爲accept時,此主線程產生new Thread

  2. Java新的輸入/輸出。一切都在主線程中處理。見http://rox-xmlrpc.sourceforge.net/niotut/index.html

另外:你指出你的服務器應用程序有一個用戶界面。用戶界面應該運行在與服務器不同的線程(Event Dispatcher Thread,EDT)中。

0

所以把這個監聽器(在一個方法中)並使用TaskFactory。 TaskFactory將在一個單獨的線程中執行該方法,您不會遇到這個問題

相關問題