具有多个积压的服务器套接字如何工作?

时间:2016-03-02 14:21:13

标签: java sockets network-programming serversocket

我是套接字编程的新手,我在理解serversocket时遇到了问题。 假设我们创建一个像这样的服务器套件:

loadbalancerSocket = new ServerSocket(port, 20);
connection = loadbalancerSocket.accept();

然后在一些东西之后,在缓冲区中写一些东西:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
                writer.write("Hello!");
                writer.flush();
                writer.close();

我的问题是:连接如何理解哪个客户端应该得到服务器的响应?我们的积压是20,而且20个客户端可以同时连接到服务器套接字(据我所知)。

1 个答案:

答案 0 :(得分:4)

在您的示例中,第一个连接的客户端获取响应。 backlog参数并不意味着可以并行连接的客户端数量。它是等待接受连接的最大客户端数。

ServerSocket未连接到任何特定客户端。连接的套接字是从accept()返回的套接字。如果要并行处理多个客户端,则必须多次调用accept()并单独处理连接。例如,您可以为每个连接创建一个特殊的线程。

accept()通常在循环中调用,而从accept()返回的新创建的连接套接字通常会传递给负责特定客户端的处理程序。