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

OkHttpClient限制连接数?

陆翰藻
2023-03-14

是否可以使用OkHttpClient限制活动连接的数量?所以,如果达到限制,就不会选择和建立新的连接?

我的应用程序同时启动多个连接。

共有2个答案

酆晔
2023-03-14

您可以通过在您的OkHttpClient上设置ConnectionPool来尝试配置最大空闲网络连接数。生成器。

int maxConnections = 5;
int keepAliveDuration = 15000;
ConnectionPool cp = new ConnectionPool(maxConnections, keepAliveDuration, TimeUnit.MILLISECONDS);

new OkHttpClient.Builder()
    .connectionPool(cp)
    .build();
闾丘树
2023-03-14

连接数可在Dispatcher中配置,而不是在ConnectionPool中配置,仅允许配置最大空闲连接和保持活动功能。

调度程序允许按主机配置连接数和最大连接数,默认为每个主机5个,总共64个。对于HTTP/1来说,这似乎很低,但如果您使用HTTP/2则可以,因为可以将多个请求发送到一个连接。

要配置调度程序,请执行以下步骤:

Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(100);
dispatcher.setMaxRequestsPerHost(10);
OkHttpClient client = new OkHttpClient.Builder()
    .dispatcher(dispatcher)
    .build();
 类似资料:
  • 所以我有几个关于这个实现的问题: 我的CLIENT_TIMEOUT比OkHttp ConnectTimeout短。如果我的抛出超时异常,解析器函数中的finally block还会执行吗?我指望它能关闭我的联系。 如何限制连接池的大小?如果连接超出限制,有没有办法自动回收最旧的连接?

  • 问题内容: 我想使用OkHttpClient加载URL,如果给定URL的网站以pdf内容类型响应,我将继续下载PDF,否则我想忽略响应。 我的问题是,我是否需要做一些特殊的事情来关闭请求/响应,或者如果我选择不读取响应字节流,是否需要做任何事情来表明我将不使用响应?如果没有,OkHttpClient何时关闭连接? 问题答案: 调用将释放响应所拥有的所有资源。连接池将使连接保持打开状态,但是如果未使

  • 我想使用OkHttpClient加载一个url,如果给定url的网站以pdf内容类型响应,我将继续下载pdf,否则我想忽略响应。 我的问题是,我是否需要做任何特别的事情来关闭请求/响应,或者我是否需要做任何事情来表明如果我选择不读取响应字流,我将不会使用响应?如果没有,OkHttpClient何时关闭连接?

  • 我是网络新手,我正在尝试制作一个用于聊天的小型java应用程序。我想要的是ServerSocket接受一个并且只有一个连接。如果第二个Socket尝试连接到ServerSocket,它将引发异常,以便启动套接字的用户知道他无法连接到那个ServerSocket我查看了javadoc并找到了那个构造函数。 创建服务器套接字并将其绑定到指定的本地端口号和指定的积压工作。端口号为0表示自动分配端口号,通

  • 问题内容: 我正在使用套接字运行一些测试,但遇到了一些奇怪的行为:ServerSocket将在第50个客户端套接字连接到它之后拒绝连接,即使该客户端套接字在打开下一个套接字之前就已关闭,即使延迟了在连接之间添加。 以下程序是我的实验代码,该代码在当前状态下不引发任何异常并正常终止。但是,如果将的阵列大小增加到50以上,则服务器套接字将拒绝在第50个连接后尝试连接的任何客户端套接字。 问题: 为什么

  • 我目前正在使用okhttp 3.10.0,我最近才发现,为每个新请求创建一个新的客户端对每个拥有自己连接池的客户端都是有害的。 我在servlet中使用okhttp。我现在要做的就是在每个servlet中声明一个静态客户机,并在init()方法中初始化它 这里是最大空闲连接的配置,我将其设置为20,空闲超时设置为5分钟。 1)实际的池大小是多少,即池将具有的最大连接(通过代码查看,我发现它可能是I