当前位置: 首页 > 知识库问答 >
问题:

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

左丘子平
2023-03-14

我是套接字编程新手,我在理解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个答案

朱炳
2023-03-14

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

ServerSocket没有连接到任何特定的客户端。连接的套接字是从接受()返回的套接字。如果您想并行处理多个客户端,您必须多次调用接受()并分别处理连接。例如,您可以为每个连接创建一个特殊的线程。

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

 类似资料:
  • 问题内容: 我知道node.js是单线程,异步,无阻塞的I / O。我已经读了很多。例如,PHP每个请求使用一个线程,但是节点仅对所有线程使用一个线程。 假设有三个请求a,b,c同时到达node.js服务器。这些请求中的三个需要大型阻止操作,例如,它们都希望读取相同的大文件。 然后,如何将请求排队,将按什么顺序执行阻塞操作,以及按什么顺序分派响应?当然使用多少个线程? 请告诉我三个请求从请求到响应

  • 问题内容: 我在uwsgi上运行flask应用程序。我使用主管来管理uwsgi进程。我发现日志说 您的服务器套接字监听积压限制为100个连接。 如何克服100个连接限制?我正在运行的脚本如下: 问题答案: 请注意,“监听积压”的100个连接并不意味着您的服务器只能处理100个同时(或总数)连接- 而是取决于配置的进程或线程的数量。侦听积压是一个套接字设置,它告诉内核如何限制侦听套接字的侦听队列中未

  • 下面是服务器接受多个客户端连接并响应的代码。服务器能够接收客户端的消息,但客户端没有接收服务器消息。我在服务器上使用了多线程概念。我还观察到,除了标有 ####. 的行之外,没有任何工作(即使是println语句)可能是客户端被阻止了...有什么想法吗?服务器代码:公共静态无效main(String artv[])抛出异常{

  • 如果Serversocket在其积压中充满请求并执行长时间运行的工作,则套接字行为会是什么。当我尝试这样做时,从windows telnet是可以的,它连接。但从unix它得到“连接拒绝”。我的应用程序是用java编写的,并在IBMjvm上运行。顺便说一句,我到了我们的应用程序没有从unix响应telnet的地步。不respoing意味着它正在编写“tyring...”并挂起,而不是拒绝或连接。有

  • 开启服务 无参数 示例: HttpDemo/bin/imi server/start 停止服务 无参数 示例: HttpDemo/bin/imi server/stop 重新加载服务 重启 Worker 进程,不会导致连接断开,可以让项目文件更改生效 无参数 示例: HttpDemo/bin/imi server/reload 更新运行时缓存后,再重新加载服务 HttpDemo/bin/im

  • 类名: Imi\Server\Server 服务器工具类 方法 getServer 获取服务器 $server = Server::getServer(); // 获取当前服务器 $server = Server::getServer('serverName'); // 获取指定名称的服务器 sendMessage 发送消息给 Worker 进程,使用框架内置格式 返回成功发送消息数量 // 发