我在我的应用程序中使用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