我在我的應用程序中使用ServerSocket
時遇到問題。在單獨的線程中創建ServerSocket?
我在我的應用程序的構造函數中創建了ServerSocket
。套接字的構造函數調用accept()
方法來等待客戶端連接。
問題是,accept()
方法凍結我的整個應用程序,直到客戶端連接。所以我想問一下,是否有另一種方法可以在單獨的線程中創建整個ServerSocket
,ServerSocket
及其accept()
方法的構造函數在我的主應用程序旁邊調用?
編輯:
感謝奧利弗的意見,把。接受成可運行和創建線程池來處理clientconnections。
,現在這就是我的代碼:
public void start(){
final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10);
Runnable serverTask = new Runnable() {
@Override
public void run() {
try {
serverSocket = new ServerSocket(port);
while (true) {
Socket clientSocket = serverSocket.accept();
objectout = new ObjectOutputStream(clientSocket.getOutputStream());
clientProcessingPool.submit(new ClientTask(clientSocket,objectout));
}
} catch (IOException e) {
System.err.println("Accept failed.");
}
}
};
萬物運行良好!謝謝!
試圖在單獨的線程移動插座相關的代碼?任何具體的問題面臨? – Ankit 2013-03-21 07:43:41
查看java.nio.channels.AsynchronousServerSocketChannel並查看它是否符合您的要求。 – Crollster 2013-03-21 07:47:31
還是更好,請看看這個問題:http://stackoverflow.com/questions/8940747/how-should-i-use-asynchronousserversocketchannel-for-accepting-connections – Crollster 2013-03-21 07:49:17