接受多个端口的ServerSocket连接

时间:2015-04-25 10:50:08

标签: java tcp concurrency serversocket

buyerSocket = new ServerSocket(BUYER_PORT);
sellerSocket = new ServerSocket(SELLER_PORT);
Socket clientSocket = null;
while (true)
    {
        clientSocket = sellerSocket.accept();
        MultiServerThread x = new MultiServerThread(clientSocket, dat);
        x.start();

        clientSocket = buyerSocket.accept();
        MultiServerThread y = new MultiServerThread(clientSocket, dat);
        y.start();

    }

在这段代码中,它总是在接受buyerSocket之前等待sellerSocket先连接。任何人都可以建议一种接受先到者的方法吗?

对于accept()的描述 - 侦听对此套接字的连接并接受它。该方法将阻塞,直到建立连接。如果我想接受来自多个端口的连接,我应该使用另一种方法而不是accept()吗?

2 个答案:

答案 0 :(得分:1)

您必须使用非阻塞IO(NIO)库。你可以按照这个很好的教程http://tutorials.jenkov.com/java-nio/index.html

答案 1 :(得分:0)

执行此操作的唯一方法是使用多线程,因为accept()方法会阻塞,直到连接进入。